我正在观看iOS课程视频,课程中的人员会输入以下代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let nextVC = segue.destination as! CreateTasksViewController
nextVC.tasksVC = self
}
CreateTasksViewController是我们应该转向的项目中的视图。此外,“tasksVC”是我们应该在应用程序中的当前视图控制器。我不明白这段代码是什么意思,如果有人能够准确解释代码的功能,那将会很有帮助。什么是“as!”?如果您需要有关我的问题的更多详细信息,请随时在评论中提问。
答案 0 :(得分:0)
这不是最好的segue代码。以下是我对其进行编码的方法(对于记录,有几种方法可以对此进行编码):
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "[segue name here]" {
if let nextVC = segue.destination as? CreateTasksViewController {
nextVC.tasksVC = self
}
}
}
您发布的代码具有所谓的segue目的地"forced unwrap"(您询问的是 as!)。 Here's一个非常好的答案的问题,解释了强行解缠的危险。向下滚动到答案中的分隔符。
虽然我确信代码编译(并且可能运行),但问题是代码维护。
假设您在多个场景之间定义了几个segue,每个场景都有自己的视图控制器?作为风格问题,我的代码为“显性”放弃了一点“快捷”:
我对第3项实际上持谨慎态度 - 为什么有人会将一个视图控制器作为变量传递给另一个视图控制器?在准备(对于segue:)的大多数情况下,发送VC中的一个或多个 变量将传递到目标。如果我可以向你提供这个...找另一个教程!