本文要实现view1跳到view2,view2又跳回view1。
首先要在视图中拉出一条连接view1和view2的线。
下面是在view1的控制器中实现,从view1跳到view2
//发生跳转前会执行这个方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
//1.取得目标控制器
UIViewController *contactVc = segue.destinationViewController;
//2.目标控制器成员变量赋值
contactVc.member = [NSString stringWithFormat:@"values = %@ ",@"set values"];
}
//比如点击一个按钮实现跳转
-(IBAction)btnAction {
//跳转到identifier所指向的视图,字符串View1ToView2是视图中连接线的标识,在连接线的属性面板中可以设置。
//performSegueWithIdentifier这个方法的参数View1ToView2会传入到上面的那个prepareForSegue方法,所以可以在prepareForSegue中识别不同的identifier,
//根据identifier进行不同是数据传递。
[self performSegueWithIdentifier:@"View1ToView2" sender:nil];
}
如果要从view2返回view1,只要view2自己关掉自己就行了,但是值传递不是用prepareForSegue,需要用代理
- (IBAction)backAction {
//1.关闭当前视图控制器
[self.navigationController popViewControllerAnimated:YES];
//respondsToSelector搜索代理的协议方法是否已经实现
//myProtalFunParam2这里是本类的头文件所声明的一个代理方法
//- (void)myProtocolFun:(View2ViewController *)view2VC Param2:(NSString *)someStr;
if ([self.delegate respondsToSelector:@selector(myProtocolFun:Param2:)]) {
[self.delegate myProtocolFun:self Param2:@"my string"];
}
}