I have an UIImageView (img) on the container2View as an IBOutlet. How can I change the img.image and refresh the view from other container (containerView)?
We have to use delegation
mainController
class mainController: UIViewController, containerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
switch segue.identifier! {
case "container":
var view = segue.destinationViewController as containerController
view.delegate = self
break
default: break
}
}
func change(name: String) {
println(name) //prints the name
container2Controller().img.image = UIImage(named: "name") //not seems to work
}
}
containerController
protocol containerDelegate {
func change(name: String)
}
class containerController: UIViewController {
var delegate: containerDelegate?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func click() {
delegate?.change("hi")
}
}
container2Controller
class container2Controller: UIViewController, containerDelegate {
@IBOutlet var img: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func change(name: String){
self.img.image = UIImage(named: name)
}
}