swift学习笔记
页面之间的跳转
从一个viewcontroller跳转到另外一个viewcontroller使用如下函数
1 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 2 if (segue.identifier == "editTodo"){ 3 var vc = segue.destinationViewController as! DetailViewController 4 var index = tableView.indexPathForSelectedRow() 5 let indePath = index 6 if ((indePath) != nil){ 7 vc.todo = todos[indePath!.row] 8 vc.isEdit = true; 9 vc.index = indePath!.row 10 11 } 12 } 13 14 }
其中segue就是链接两个viewcontroller的对象,
var vc = segue.destinationViewController as! DetailViewController
可以获取到需要跳转的viewcontroller的对象,如果需要给目标传值,可以在目标的viewcontroller的代码中添加一个成员变量,给他赋值。(真的只有这么土的方法么?有没有别的方式?求指点)
如果两个viewcontroller之间有多个传值怎么办?
可以使用identifier来区分,
identifier的配置在
如果需要从目标viewcontroller回传之则需要
1 @IBAction func close(segue: UIStoryboardSegue){ 2 3 4 var detail = segue.sourceViewController as! DetailViewController 5 6 if(!detail.isEdit!){ 7 todos.append(detail.todo!) 8 9 }else{ 10 todos[detail.index] = detail.todo! 11 } 12 13 tableView.reloadData() 14 15 16 }
close是自己定义的函数,用于回传值,因为是回传,所以是sourceViewController
var detail = segue.sourceViewController as! DetailViewController
设置方法是在storyboard中设置
图片中左边的viewcontroller就是要回传值的controller,给他的exit绑定一个函数就可以了