iOS 页面之间的传值

ios页面之间的传值是很常用的,常用的方法有这几种:delegate、block。

下面就以 viewControllernextViewController之间的传值为例,过程是这样的:

1、viewController pushViewController到nextViewController。

2、nextViewController再popViewControllerAnimated回到viewController,同时将

nextViewController的输入(用户名)回传给viewController。

一、delegate(代理)

1、在NextViewController实现代理方法:

这是用的比较普遍也是比较早的,需要声明一个代理:

//NextViewController.h

@protocol NextViewControllerDelegate <NSObject>

- (void) passUserName: (NSString *)name;

@end


@interface NextViewController :UIViewController

@property (nonatomic,weak)id<NextViewControllerDelegate> delegate;

@end


//NextViewController.m

....

在退出页面时调用

- (void) handlePopController {

    if (self.delegate && [self.delegaterespondsToSelector:@selector(passUserName:)]) {

        [self.delegatepassUserName:@"wqm"];

    }

}

2、在viewController中实现代理方法

//在进入NextViewController页面时调用handlPushViewController

- (void)handlPushViewController {

    NextViewController *nextVC = [[NextViewControlleralloc]init];

    nextVC.delegate =self;

    [self.navigationControllerpushViewController:nextVCanimated:YES];

}


#pragma mark NextViewControllerDelegate

- (void)passUserName:(NSString *)name {

    NSLog(@"His name is %@", name);

}


二、block实现:

1、NextViewController定义一个block的成员变量

//NextViewController.h

@interface NextViewController :UIViewController

@property (nonatomic,copy)void (^passName) (NSString *name);

@end


//NextViewController.m

- (void) handlePopController {

    self.passName(@"wqm");

}

2、ViewController给block赋值

//ViewController.m

//在进入NextViewController页面时调用handlPushViewController

- (void)handlPushViewController {

    NextViewController *nextVC = [[NextViewControlleralloc]init];

    nextVC.passName = ^(NSString *name) {

        NSLog(@"His name is %@", name);

    };

    [self.navigationControllerpushViewController:nextVCanimated:YES];

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值