您的位置:首页 > 其它

二、总结几种关于ViewControllers之间传值的方式(从子视图向父视图传值)

2014-02-24 00:22 375 查看
从子视图向父视图回传值,通常有以下三种方法

{

1、Delegate(代理)

2、Notification(通知)

3、Blocks(块)

}

以FirstViewController和SecondViewController作为例子,SecondViewController是FirstViewController的子视图

1、Delegate

/*
*	SecondViewController.h
*/
#import <UIKit/UIKit.h>

//定义协议(即 使用了这个协议后,就需按照这个协议规定的内容在执行)
@protocal SecondViewControllerDelegate <NSObject>

- (void)passDataBack: (NSString *)data;

@end

@interface SecondViewController : UIViewController <SecondViewControllerDelegate>

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

@end

/*
*	SecondViewController.m
*/
//为了省略篇幅,只贴出必要的代码
- (IBAction)back:(id)sender{
[self.delegate passDataBack:@"pass data back"];
[self.desmissViewControllerAnimated:YES completion:nil];
}

/*
*	FirstViewController.h
*/
#import <UIKit/UIKit.h>
#import <SecondViewController.h>
//FirstViewController遵循SecondViewControllerDelegate协议
@interface FirstViewController : UIViewController <SecondViewControllerDelegate>

@end

/*
*	FirstViewController.m
*/

- (IBAction)open:(id)sender{
SecondViewController *secondViewController = [[SecondViewController alloc] init];
secondViewController.delegate = self;
[self presentViewController:secondViewController completion:nil];
}
//在这里要补充好协议中passDataBack的方法
- (void)passDataBack: (NSString *)data{
NSLog(@"Passing data is %@", data);
}


2、Notification

补充ing。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: