【发布时间】:2015-08-08 04:06:07
【问题描述】:
您能告诉我如何从 View Controller B 更改 ViewController A 中 UIImageView 的 Image 吗?
我的 Xcode 版本是 Xcode 7,带有 Swift 2.0,
谢谢。
【问题讨论】:
-
你可以使用 NSNotification
您能告诉我如何从 View Controller B 更改 ViewController A 中 UIImageView 的 Image 吗?
我的 Xcode 版本是 Xcode 7,带有 Swift 2.0,
谢谢。
【问题讨论】:
作为thefredelement,您可以使用NSNotification,就像在您的ViewController B 中一样,只需在您将视图关闭到ViewController A 时添加此代码:
@IBAction func goBack(sender: AnyObject) {
NSNotificationCenter.defaultCenter().postNotificationName("refresh", object: nil)
self.dismissViewControllerAnimated(true, completion: nil)
}
然后在您的 viewController A 中将这段代码添加到您的 viewDidLoad 方法中:
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "refreshList:", name:"refresh", object: nil)
}
并在同一个类中添加这个辅助方法:
func refreshList(notification: NSNotification){
println("parent method is called")
//you can change your UIImageView's Image here.
}
现在,当您从 ViewController B 按下按钮时,它将从 ViewController A 调用此方法。
注意:我已经在 Xcode 6.4 上对此进行了测试,我认为它在 Xcode 7 上也可以正常工作。
【讨论】:
在 Swift 4 中
第一个视图控制器
@IBOutlet weak var imageView: UIImageView! // ImageView
func goToImageChooserClass () {
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let secondVC = storyBoard.instantiateViewController(withIdentifier: "SecondVC") as! SecondVC
secondVC.firstVC = self // Object in 2nd Controller that is a FirstVC Object
self.present(secondVC, animated:true, completion:nil)
}
第二个视图控制器
class SecondVC {
...
var firstVC:FirstVC! // Object representing the firstVC
...
func goBack (){
self.dismiss(animated: true, completion: {
self.firstVC.imageView = {insert your image here}
})
}
}
【讨论】:
这是您使用 NSUserDefaults 的方式
你这样写:
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(image!, forKey: "image")
并像这样阅读:
let defaults = NSUserDefaults.standardUserDefaults()
let image = defaults.objectForKey("image") as! UIImage
并将其设置为imageView
【讨论】: