ios学习(界面传值的方法)

ios(学习)界面传值的方法

block

实现界面传值的方法1.block

实现界面传值,都是从第二个界面向第一个界面传值:第一种block

首先).在第二个界面secondViewController声明set方法

声明block

@property (nonatomic,copy) void(^change)(UIColor *color);

其次)..m文件实现

实现block的方法

 _callback([UIColor redColor]);//注意这里之所以是_callback的原因是实现的get方法,默认的_callback

最后)通过第二个视图控制器带回给firstViewController

实现block里写的方法传给firstViewController

 [sv setCallback:^(UIColor *color) {

 self.view.backgroundColor = color;

 }];


通知中心:

实现界面传值的方法2.通知中心:

首先).注册观察者,然后跳转到第二个界面,在第二个界面进行广播,实现注册时的方法,改变第一个页面的颜色

通过通知中心的方法首先注册一个观察者在firstViewController

1.注册

在通知中心里注册一个观察者self

 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(notification ) name:@"changeColor" object:nil];

2.其次在secondViewController进行广播

广播

 [[NSNotificationCenter defaultCenter]postNotificationName:@"changeColor" object:nil];

3.找到之前的颜色

 -(void)notification{

 

 self.view.backgroundColor = [UIColor blueColor];

 

 }


代理

实现界面传值的方法3:代理

首先

 从第二个界面向第一个界面传值,我们使用的代理。第二个界面为被代理者,首先要制定协议

协议的本质就是一个方法列表

@protocol Protocal <NSObject>

-(void)changeBackColor:(UIColor *)color;

@end

在协议里面写一个方法,给遵从协议者的奖励

然后告诉说明只要符合以下就可以实现代理

@property (nonatomic,assign) id<Protocal> delegate;

.m文件中实现方法,用来给予遵从协议的一方

其次:

遵守者,遵守代理协议的一方首先要遵从协议

然后便会获得协议制订者给予的奖励

-(void)changeBackColor:(UIColor *)color

{

 self.view.backgroundColor = color;

 }

4.该方法是通过获得上一个视图控制器,然后改变其中的内容后传给上一个视图控制器,此处用到了数组,因为视图控制器在多页面跳转时是以棧的形式然后存取是按照数组存取的,方法的实现在secondViewController

    NSArray *arr = self.navigationController.viewControllers;

    UIViewController *s = [arr objectAtIndex:0];

    s.view.backgroundColor = [UIColor redColor];

    [self.navigationController popViewControllerAnimated:YES];

5.kvo

    

你可能感兴趣的:(ios学习(界面传值的方法))