Ich entwickle eine App für iPad Pro. In dieser App containerView
verwenden, um zusätzliche views
hinzufügen und interagieren mit ihnen.Delegate mit Container View in Swift
Zuerst habe ich ein Protokoll erstellt:
protocol DataViewDelegate {
func setTouch(touch: Bool)
}
Dann habe ich meine erste View-Controller
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!"
}
}
}
erstelltUnd schließlich habe ich einen Blick das wird in containerView eingebettet werden.
import UIKit
class ContainerViewController: UIViewController {
var dataViewDelegate: DataViewDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func touchMe(sender: AnyObject) {
dataViewDelegate?. setTouch(true)
}
}
Aber aus irgendeinem Grund, es ist nichts passiert, die erste View-Controller nichts in setTouch Funktion erhält.
Meine Frage ist: In diesem Fall, mit Container, wie kann ich die Kommunikation zwischen zwei ViewsControllers machen?
zwischen View-Controller kommunizieren Sie Delegierung verwenden können, wie Sie tun. Sie sollten jedoch den UIViewController-Programmierleitfaden von Apple https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/DesignTips.html lesen, um Best Practices zu erfahren, insbesondere den Abschnitt mit dem Titel "Machen Sie jeden View Controller zu einem Island". – beyowulf