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

从子视图向父视图回传值,通常有以下三种方法

{

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。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值