【发布时间】:2016-02-24 17:49:39
【问题描述】:
【问题讨论】:
标签: xcode swift properties containers uicontainerview
【问题讨论】:
标签: xcode swift properties containers uicontainerview
一步一步:
prepareForSegue(_:sender:)。segue.identifier 是否等于您在步骤 1 中指定的标识符。segue.destinationViewController 保存到您的资源中。viewDidLoad() 方法中。示例:
var containerViewController: YourContainerViewControllerClass?
let containerSegueName = "testSegue"
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == containerSegueName {
containerViewController = segue.destinationViewController as? YourContainerViewControllerClass
}
}
【讨论】:
containerViewController.MyButton.backgroundColor.. 在您的视图控制器(不是容器视图控制器)中
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 否则不会调用此方法
我建议不要依赖segue.identifier,而是直接测试destination类型:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
if let vc = segue.destination as? YourViewController {
vc.someVariable = true
}
}
这样可以避免拼写错误的 segue 名称的错误。
【讨论】:
var contentViewController : UIContentViewController?
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == containerSegueName {
contentViewController = segue.destination as? UIContentViewController
}
}
【讨论】:
适用于 macOS 的 Swift 3:
// MARK: - Container View Controller
var containerViewController: ContainerViewController?
let containerSegueIdentifier = "Container Segue"
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
if segue.identifier == containerSegueIdentifier {
if let connectContainerViewController = segue.destinationController as? FormationViewController {
formationViewController = connectContainerViewController
}
}
}
检查标识符和控制器类。
【讨论】: