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的配置在

swift学习笔记_第1张图片

 

如果需要从目标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中设置

swift学习笔记_第2张图片

图片中左边的viewcontroller就是要回传值的controller,给他的exit绑定一个函数就可以了

 

 

你可能感兴趣的:(swift)