从另一个View Controller Swift 2.0更改View Controller Image

时间:2015-08-08 04:06:07

标签: ios iphone xcode swift

请告诉我如何从View Controller B中更改ViewController A中的UIImageView图像?

我的Xcode版本是Xcode 7,带有Swift 2.0,

谢谢。

3 个答案:

答案 0 :(得分:0)

作为thefredelement,您可以使用NSNotification,就像在ViewController中一样,只需在解除对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。

答案 1 :(得分:0)

在Swift 4中

第一个View Controller

@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}
        })   
    }
}

答案 2 :(得分:-3)

以下是您使用NSUserDefaults

的方式

你这样写:

let defaults = NSUserDefaults.standardUserDefaults()

defaults.setObject(image!, forKey: "image")

并且如下所示:

let defaults = NSUserDefaults.standardUserDefaults()

let image = defaults.objectForKey("image") as! UIImage

并将其设置为imageView