Segue Destination 何时调用 viewDidAppear?
When Does the Segue Destination Call viewDidAppear?
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let strategyPicker=segue.destination as! StrategyViewController
strategyPicker.folder=self.folder
NSLog("Tried to pass \(self.folder) into \(String(describing: strategyPicker.folder))")
}
尝试在 lldb 中进行调试,似乎只是分配 segue.destination 会触发目标视图控制器中的 viewDidAppear。在传递文件夹之前,我在目标的 viewDidAppear 中遇到致命错误。我知道任何初始化程序代码都必须 运行 (确实如此——根据 lldb e 命令正确初始化了几个字段)。在 prepareForSegue 完成之前调用 viewDidAppear 只是没有意义。
我在 strategyPicker.folder 分配和 NSLog 上设置了断点,并且在目标 viewDidAppear 中的错误之前都没有触发。
有什么建议吗?
在调用 prepare(for:sender:)
之前未调用 viewDidLoad
/viewWillAppear
/viewDidAppear
。
您显示的函数没有被调用,因为它没有正确的方法签名。你要
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let strategyPicker=segue.destination as? StrategyViewController {
strategyPicker.folder=self.folder
NSLog("Tried to pass \(self.folder) into \(String(describing: strategyPicker.folder))")
}
}
此外,由于您提到了目标视图控制器中的崩溃,很可能您正在那里强制展开 folder
;您可能应该重新考虑这一点并进行防御性编码。如果 folder
是 nil
.
,则有条件地展开并显示适当的错误消息
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let strategyPicker=segue.destination as! StrategyViewController
strategyPicker.folder=self.folder
NSLog("Tried to pass \(self.folder) into \(String(describing: strategyPicker.folder))")
}
尝试在 lldb 中进行调试,似乎只是分配 segue.destination 会触发目标视图控制器中的 viewDidAppear。在传递文件夹之前,我在目标的 viewDidAppear 中遇到致命错误。我知道任何初始化程序代码都必须 运行 (确实如此——根据 lldb e 命令正确初始化了几个字段)。在 prepareForSegue 完成之前调用 viewDidAppear 只是没有意义。
我在 strategyPicker.folder 分配和 NSLog 上设置了断点,并且在目标 viewDidAppear 中的错误之前都没有触发。
有什么建议吗?
prepare(for:sender:)
之前未调用 viewDidLoad
/viewWillAppear
/viewDidAppear
。
您显示的函数没有被调用,因为它没有正确的方法签名。你要
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let strategyPicker=segue.destination as? StrategyViewController {
strategyPicker.folder=self.folder
NSLog("Tried to pass \(self.folder) into \(String(describing: strategyPicker.folder))")
}
}
此外,由于您提到了目标视图控制器中的崩溃,很可能您正在那里强制展开 folder
;您可能应该重新考虑这一点并进行防御性编码。如果 folder
是 nil
.