Segue --数据传递、顺传、逆传

来源:互联网 发布:数据挖掘所需要的技术 编辑:程序博客网 时间:2024/06/06 22:45
Segue的属性1、唯一标识@property (nonatomic, readonly) NSString *identifier;2、来源控制器@property (nonatomic, readonly) id sourceViewController;3、目标控制器@property (nonatomic, readonly) id destinationViewController;在非自动的情况,完成二个控制器跳转的方法其中第一个参数就是挑战中连线取的名字self 就是来源控制器[self performSegueWithIdentifier:@"login2contacts"  sender:nil];二:顺着传递数据二个控制器之间传递数据,通过控制器实现某个方法达到数据的传递控制器实现这个方法后,可以传递数据逻辑:从segue中可以取得目的的controller,拿到后可以做出对应的操作,如设置标题/** *  执行Segue后,跳转之前会调用这个方法 *  给下一个控制器传递数据 */- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{    }三:数据的传递:回传,从后一个控制器回到前面前面一个控制器思想:如果逆向传递,采用代理步骤:--------------------------------------------------------------------------------------------------------默认进入controller弹出键盘思想:让输入框称为第一响应    [self.nameField becomeFirstResponder];//成为第一响应者退出键盘    [self.nameField resignFirstResponder];//退出第一响应者小技巧:这里弹出键盘的时机也是有考虑,更好的是当整个控制器的视图都显示完毕再弹出,因此走生命周期的方法会很好逻辑分析:数据提供的ViewController做到数据源提供,而标源的接受只需要遵守我们的代理,代理的方法中就会将数据传递过去1、先写一个代理:@protocol AddViewControllerDelegate <NSObject>@optional- (void)addViewControllerDidAddContact:(AddViewController *) addVc;@end2、将写好的代理作为数据源提供的controller的成员变量@property(nonatomic, weak) id<AddViewControllerDelegate> delegate;3、传递数据就是通知代理,这样数据便完成了传递//传递数据给前一个控制器,//通知代理,if ([self.delegate respondsToSelector:@selector(addViewControllerDidAddContact:)]) {    [self.delegate addViewControllerDidAddContact:self];}4、目标controller遵守对应的代理@interface ContactsViewController () <UIActionSheetDelegate, AddViewControllerDelegate>实现对应的方法/** *  代理方法,添加数据的Controller发生数据传递,从而调用代理方法 */- (void)addViewControllerDidAddContact:(AddViewController *)addVc{    NSLog(@"fuck");}5、当然还有一个最重要的操作就是:将代理方法传递思想:因为segue中可以拿到自己contr和目的的destination二个controller,这里就是做设置代理传递最好的地方- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{    AddViewController *addVc = segue.destinationViewController;    addVc.delegate = self;}6、还有一个非常重要的一点:顺传数据,不要再set方法中赋值数据,因为controller控制器还没有家在view,而应该在viewDidLoad中加载逆传数据,则在代理方法中完成操作

0 0