我不明白这段代码的作用(代码是关于 segues 的)
I do not understand what this code does(the code is about segues)
我正在观看 iOS 课程视频,课程中的人输入了以下代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let nextVC = segue.destination as! CreateTasksViewController
nextVC.tasksVC = self
}
CreateTasksViewController 是我们应该转到的项目中的视图。另外 "tasksVC" 是应用程序中我们应该是的当前视图控制器 on.I 不明白这段代码的意思,如果有人能准确解释代码的功能,那将会很有帮助.另外什么是 "as!"?如果您需要有关我的问题的更多详细信息,请随时在评论中提问。
那不是最好的 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
}
}
}
您发布的代码有一个所谓的 "forced unwrap" of the segue destination (that's the as! you asked about). 问题和一个很好的答案,解释了强制解包的危险。向下滚动到答案中的分隔线。
虽然我确定代码可以编译(并可能运行),但问题是代码维护。
假设您在几个场景之间定义了多个转场,每个场景都有自己的视图控制器?我的代码,就风格而言,为 "explicitness":
放弃了一点 "Swiftiness"
- (1) 检查 segue 是否正确
- (2) if let... as? 用于安全检查 segue 目标是否为正确的视图控制器
- (3) 如果一切都通过检查,那么代码就会被执行。在这种情况下,它看起来像是将整个(!)视图控制器传递给 CreateTasksViewController 中名为 tasksVC 的变量。
我实际上对第 3 项持谨慎态度 - 为什么会有人将一个视图控制器作为变量传递给另一个视图控制器?大多数情况下 prepare(for segue:) 一个或多个变量 inside 发送 VC 被传递到目的地。如果我可以将此提供给您...找到另一个教程!
我正在观看 iOS 课程视频,课程中的人输入了以下代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let nextVC = segue.destination as! CreateTasksViewController
nextVC.tasksVC = self
}
CreateTasksViewController 是我们应该转到的项目中的视图。另外 "tasksVC" 是应用程序中我们应该是的当前视图控制器 on.I 不明白这段代码的意思,如果有人能准确解释代码的功能,那将会很有帮助.另外什么是 "as!"?如果您需要有关我的问题的更多详细信息,请随时在评论中提问。
那不是最好的 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
}
}
}
您发布的代码有一个所谓的 "forced unwrap" of the segue destination (that's the as! you asked about).
虽然我确定代码可以编译(并可能运行),但问题是代码维护。
假设您在几个场景之间定义了多个转场,每个场景都有自己的视图控制器?我的代码,就风格而言,为 "explicitness":
放弃了一点 "Swiftiness"- (1) 检查 segue 是否正确
- (2) if let... as? 用于安全检查 segue 目标是否为正确的视图控制器
- (3) 如果一切都通过检查,那么代码就会被执行。在这种情况下,它看起来像是将整个(!)视图控制器传递给 CreateTasksViewController 中名为 tasksVC 的变量。
我实际上对第 3 项持谨慎态度 - 为什么会有人将一个视图控制器作为变量传递给另一个视图控制器?大多数情况下 prepare(for segue:) 一个或多个变量 inside 发送 VC 被传递到目的地。如果我可以将此提供给您...找到另一个教程!