我在 View Controller 中有一个用户注册表单,用户可以在其中设置个人资料图像,并且有一个带有“我的个人资料”选项卡的选项卡栏 Controller ,该图像在注册后应显示在其中。如何将图像从注册表单传输到选项卡 Controller “我的个人资料”?从 addPhotoImage( View Controller )到 userPhotoImage(选项卡 View Controller )。
import UIKit
class SigninViewController: UIViewController {
var imagePicker = UIImagePickerController()
@IBOutlet var countPlaceInCar: UITextField!
@IBOutlet var nameOfCar: UITextField!
@IBOutlet var AddPhotoButton: UIButton!
@IBOutlet var registerButton: UIButton!
@IBOutlet var registrationSegmented: UISegmentedControl!
@IBOutlet var addPhotoImage: UIImageView!
@IBOutlet var nameTextField: UITextField!
@IBOutlet var phoneTextField: UITextField!
@IBOutlet var passwordTextField: UITextField!
@IBOutlet var emailTextField: UITextField!
@IBOutlet var segmentedControl: UISegmentedControl!
override func viewDidLoad() {
super.viewDidLoad()
imagePicker.delegate = self
makeRounded()
}
//func that rounded image for user
func makeRounded() {
addPhotoImage.layer.borderWidth = 1
addPhotoImage.layer.borderColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
addPhotoImage.layer.cornerRadius = addPhotoImage.frame.height/2 //This will change with corners of image and height/2 will make this circle shape
addPhotoImage.layer.masksToBounds = true
}
@IBAction func addPhotoFromLibraryOrCamera(_ sender: UIButton) {
imagePicker.sourceType = .photoLibrary
imagePicker.allowsEditing = true
present(imagePicker, animated: true, completion: nil)
}
}
extension SigninViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[UIImagePickerController.InfoKey.editedImage] as? UIImage {
addPhotoImage.image = image
}
dismiss(animated: true, completion: nil)
}
}
import UIKit
class FourthViewController: UIViewController {
@IBOutlet var messageForUser: UIButton!
@IBOutlet var routeImage: UIImageView!
@IBOutlet var userPhotoImage: UIImageView!
override func viewDidLoad() {
}
最佳答案
首先。您要传输 UIImage
,而不是 UIImageView
。
UIImage
是图像的数据表示。
UIImage
仅显示图像。
你可以像这样使用单例:
class UserManager {
static let shared = UserManager()
var image: UIImage?
}
然后你就可以像这样从任何地方访问它了
UserManager.shared.image
请注意,通过这种方法,图像将在应用程序在内存中时一直在内存中。因此,仅当您一直需要图片时才使用它。
关于ios - 如何在没有 segue 的情况下将 ImageView 从 View Controller 传递到选项卡栏 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56137776/