这个问题是我在多界面传值的时候遇到的,第一个界面可以直接向第二个界面传值,但是,后面一个界面不能直接向前一个界面传值,这个时候想要实现第二个界面向第一个传值就需要建立一个协议,借助这个协议实现这个功能。
首先我们要明白,第二个界面需要实现这个功能,所以第二个界面需要借助协议方法,因此第二个界面是委托人,所以
第二个界面.delegate = self;
在第一个界面实现第二个界面的初始化,同时制定代理,这个时候就要在下面实现代理方法,注意,是实现,不是调用,这个时候就是重点了,在哪里制定代理,就要在哪里实现代理方法,在第一个界面的VC中实现的代理,所以,也要在第一个界面中实现代理方法。
-(void)nextvc
{
vc = [[myViewController alloc] init];
vc.str = self.textfiled.text;
vc.delegate = self;//指定代理
vc.modalPresentationStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:vc animated:NO completion:nil];
}
//实现代理方法
-(void)chuanzhi:(NSString *)str
{
self.textfiled.text = str;
}
在第二个界面我们就可以调用代理方法了,注意,是调用 不是实现
-(void)back
{
[self.delegate chuanzhi:self.textfiled.text];//这个是调用,不是实现,一定要搞清楚实现和调用的区别,只实现一次,可以多次调用
}
注:在第一个界面初始化第二个界面,并且指定了代理,所以也要在第一个界面实现代理方法,这样就可以在第二个界面调用代理方法