iOS开发页面之间的传值

释放双眼,带上耳机,听听看~!

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

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

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];

}

 

 

 

人已赞赏
iOS文章

iOS开发Touch ID验证

2020-1-29 13:52:07

iOS文章

iOS13以后系统相册无法拉到最顶部

2020-1-29 14:29:44

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索