我希望在swift 3 xcode

时间:2016-11-14 16:09:45

标签: ios xcode uiimageview swift3 viewcontroller

我在第一个视图控制器中有一个ImageView,在另一个视图控制器中有一个动作按钮 - 该按钮的作用是通过此代码更改第一个视图控制器中的图像。

ImageThemed是第一个ImageView。

此操作位于第二个视图控制器中。

@IBAction func MM(_ sender: Any) {
     ImageThemed.image = UIImage(named:"Nike.png")

我想要做的就是通过按第二个视图控制器中的按钮在第一个视图控制器中设置图像。由于第二视图控制器嵌入在第一视图控制器中。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

可能最好的解决方案是使用委托。 您必须在第二个视图控制器(带按钮的控制器)中声明协议

protocol SomeOtherViewControllerDelegate {    
    func changeImageButtonPressed()
}
...

class SomeOtherViewController:UIViewController {
... // your existing properties
var delegate: SomeOtherViewControllerDelegate!
... // properties, methods etc...
}

此外,您必须使FirstViewControllerUIImageView}与您的协议SomeOtherViewControllerDelegate保持一致:

class FirstViewController: UIViewController, SomeOtherViewControllerDelegate {
...
    func changeImageButtonPressed() {
        ImageThemed.image = UIImage(named:"Nike.png") // change the image
    }
}

然后,无论您将SomeOtherViewController嵌入FirstViewController,都必须设置代理:

let someVC:SomeOtherViewController = ...
// self = your FirstViewController instance
someVC.delegate = self