2017-01-28 117 views
-8

我看在使用过程种的是iOS课程的视频,而该人了这个代码:我不明白这个代码做什么(代码为约塞格斯)

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    let nextVC = segue.destination as! CreateTasksViewController 
    nextVC.tasksVC = self 

} 

的CreateTasksViewController在视图我们应该延续到的项目。另外“tasksVC”是当前视图控制器,在应用程序中我们应该是on.I不明白这段代码的意思,如果有人能够准确解释代码的功能是什么,这将是有帮助的。还有什么是“as!”?如果您需要关于我的问题的更多细节,请随时在评论中提问。

+2

不明白“as!”的含义表明你没有完成基本的语言教程,甚至没有用它来搜索你自己。你为什么期望理解你还没有学过的语言? – Clive

+0

我没把!在我的课程 – tj75467

+0

一个链接可能是有用的 – tj75467

回答

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"(这是作为代码你问了一下)。 Here's这个问题有一个很好的答案,解释了强制解包的危险。向下滚动到答案中的分隔符。

虽然我确定代码编译(可能运行),但问题是代码维护。

假设您在几个场景之间定义了几个segues,每个场景都有自己的视图控制器?我的代码,因为风格问题,放弃了“明确性”有点“Swiftiness”的:

  • (1)进行检查,该SEGUE是正确的
  • (2)如果让...作为?是安全检查是否正确的视图控制器的继续目标如果一切通过检查,然后代码被执行。如果正确的视图控制器
  • (3)在这种情况下,它看起来像将整个(!)视图控制器传递到CreateTasksViewController中名为tasksVC的变量中。

我实际上对项目3持谨慎态度 - 为什么有人将一个视图控制器作为变量传递给另一个视图控制器?大多数情况下准备(for segue :)一个或多个变量里面发送VC传递到目的地。如果我可以提供给你...找到另一个教程!

相关问题