【发布时间】:2014-12-13 08:46:55
【问题描述】:
我正在尝试学习 Swift,我正在尝试开发著名的笔记应用程序。
有一个数组绑定到一个 tableview 和另一个用于添加注释的视图。 在第二个视图 textfieldshouldreturn 事件触发 segue 并返回到 tableview。
我想知道这是否是正确的方法。因为通过这种方式,我正在另一个视图控制器中操作一个变量。我不是 MVC 大师,但我觉得这是错误的。这是我的代码 sn-p:
func textFieldShouldReturn(textField: UITextField) -> Bool {
self.performSegueWithIdentifier("backSegue", sender: self)
return true
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "backSegue"){
let navController = segue.destinationViewController as UINavigationController;
let myController = navController.topViewController as NotesTableViewController;
if(self.ourTextField?.text != nil || self.ourTextField?.text != ""){
myController.notes.append(self.ourTextField?.text ?? "");
}
}
}
谢谢。
【问题讨论】:
-
你为什么感觉它错了?这是正确的方法。控制器用于管理数据和这些数据的视图,因此当一个 segue 推送(或弹出)另一个视图控制器时,在源和目标之间传递一些数据是合理的。
-
这绝对是一种非常常见的在视图控制器之间传递数据的方式,你不用担心使用它。很多well-respected developers 都这样做。不过,这不是唯一真正的方式,还有其他选择。据我所知,Swift 在这方面并没有什么特别之处,所以你也应该看看existing Objective C question。