回调方式

第一种:delegate

若有A·B界面,A跳转到B,B返回A并将所需的值传给A(不能盲目的复制,你的先写出A跳转到B的代码,然后再按下面的步骤写)

例:B.h文件下面写

#import <UIKit/UIKit.h>

@protocol LookTaskCtrlDelegate <NSObject>

- (void)lookTaskCtrlWithMember:(NSarray *)ary;

@end

@interface LookTaskCtrl : UIViewController

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

@end

B.m文件中传我们想要的数据

NSarray = @[@"1111",@"2222",@"33333"];

[self.delegate lookTaskCtrlWithMember:lookMemberArry];

B文件的工作就结束了,现在传值回A文件了

A.m 

@interface UIViewController()<LookTaskCtrlDelegate>

#pragma mark LookTaskCtrlWithMemberDelegate

- (void)lookTaskCtrlWithMember:(NSMutableArray *)ary{

      NSLog(@"ary = %@",ary);

}

B界面里定义的数组就回到A界面啦~~~

 

第二种:Block

Block,有点难理解,多写个3遍就会发现有点味道了.知道是个怎么回事.

例:同样在B文件里,定义一个带Block的方法

#import <UIKit/UIKit.h>

typedef void(^GradeValueStr)(NSString *string);

@interface TaskGradeCtrl : UIViewController

- (void)returnGradeStrWithBlock:(GradeValueStr) block;

@end

在B.m文件里

@implementation TaskGradeCtrl{

    GradeValueStr gradeblock;

}

在这里面又定义一个,会发现奇怪,其实和前面的什么关系,他也是一个Block,只是方便赋值而已.因为两个方法调用同一个值需要定义一个全局的.

- (void)returnGradeStrWithBlock:(GradeValueStr) block{

    gradeblock = block;//这个时候block就等于gradeblock了,gradeblock是从别的方法里得到的.你会郁闷,这个方法不会运行啊.

                                   其实就是将这个方法放到A.h文件里去执行,block的数据是不是也到A.m文件里去了呢

}

然后回到A.m文件中,那个地方实例B,方法就放那去执行吧

   TaskGradeCtrl *taskGradeVC = [[TaskGradeCtrl alloc] init];

    [taskGradeVC returnGradeStrWithBlock:^(NSString *grade){

            NSlog(@"grade = %@",grade);

    }];

  [self.navigationController pushViewController:taskGradeVC animated:YES];

这样Block方法也就完成了回调了

 

第三种方法:viewWillAppear: 视图即将可见时调用。默认情况下不执行任何操作

例:

- (void)viewWillAppear:(BOOL)animated{

    if (!B.ary){

        [createListTab reloadData];

        return;

    }

    [chargeAry setArray:B.ary];

    NSLog(@"chargeAry = %@",chargeAry);

    [createListTab reloadData];

}

这段代码的意思是如果B.ary这个数据不为空,就赋值,由于当我们跳转到B的时候就alloc了,如果B中附了值.那么返回A的时候值也被回调了.

这样就完成3种回调啦~~~,想想今天看了别人用MVC的代码,转的我头都晕乎的,今后也要用这种方式写,虽然基本原理都懂,但是我还是没看懂那代码,要是有哪位大神能给个通熟易懂好学习的代码就感激不敬啦.

 

posted @ 2015-12-29 20:55  zk·mark  阅读(249)  评论(0编辑  收藏  举报