清单可以通过实施协议来修复。请查看以下 WWDC:
https://developer.apple.com/videos/play/wwdc2015-408/
此外,关于 segue,有几点需要注意(OSX 也是如此)...
注意:
i) 根据定义,segue 是一个部分到另一个部分之间的过渡(电影中的场景或音乐中的部分)。所以当涉及到视图控制器时,它们应该是“中间人”......
i.e. ViewController1 <-- segue ->> ViewController2
ii) 当您继承并覆盖prepareForSegue 时,您是在告诉您的代码您想自己处理转换。即在 UITabviewController(或 NSStabViewController)中,您可以使用一些您想在覆盖中实现自己的行为来覆盖它们的默认行为
第 1 部分)PrepareForSegue - 在它发生之前:
这是您实例化、配置、设置等...您的视图控制器的地方。如果它们已经设置好,那么您应该在这里进行超级调用。
//i.e. super.PrepareSegueForIdentifier(identifier)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "something" {
// Do your thing here
// MARK: IFYES
} else {
prepareForSegue(segue, sender: sender)
}
}
如果您为“成为”视图控制器做好了准备工作,那么请在我标记为“IFYES”的“if”语句的第一部分中进行设置。您可以设置动画、颜色、大小等...
完成后,还有另一个方法:
performSegueWithIdentifier:
我使用的一个例子是:
override func performSegueWithIdentifier(identifier: String, sender: AnyObject?) {
if (identifier == "yourIdentifier") {
Do something here
} else {
super.performSegueWithIdentifier(identifier, sender: sender)
}
}
这是标识符为yourIdentifier 的segue 实际执行某些操作的时候。即当您的 viewController 调用动作或函数时:
func someFunction(){
self.performSegueWithIdentifier("yourIdentifier", sender: senderObjectName)
}
这当然是如果您确保控制器之间的转场等...具有正确的标识符和类型...