Sto sviluppando un'applicazione per iPad Pro. In questa app, containerView
utilizzare per aggiungere ulteriori views
e interagire con loro.Delegare utilizzando la vista Contenitore in Swift
In primo luogo, ho creato un protocollo:
protocol DataViewDelegate {
func setTouch(touch: Bool)
}
Poi, ho creato il mio primo controller di vista
import UIKit
class ViewController: UIViewController, DataViewDelegate {
@IBOutlet var container: UIView!
@IBOutlet var labelText: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
func setTouch(touch: Bool) {
if touch == true {
labelText.text = "Touch!"
}
}
}
E, infine, ho creato una vista che sarà incorporato in containerView.
import UIKit
class ContainerViewController: UIViewController {
var dataViewDelegate: DataViewDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func touchMe(sender: AnyObject) {
dataViewDelegate?. setTouch(true)
}
}
Ma per qualche motivo, non è successo niente, il primo controller della vista non riceve nulla in funzione setTouch.
La mia domanda è: In questo caso, utilizzando il contenitore, come posso effettuare la comunicazione tra due ViewsControllers?
per comunicare tra i controller di vista è possibile utilizzare la delega, come si sta facendo. Tuttavia, dovresti leggere la guida alla programmazione di UIViewController di Apple https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/DesignTips.html per le migliori pratiche, in particolare la sezione "Rendi ogni controller di visualizzazione un'isola". – beyowulf