您的位置:首页 > 其它

(有码)代理模式导航控制器传值

2016-01-28 19:44 288 查看
//在AppDelegate.m中将oneViewController设置为根视图(不会设置的,在目标动作机制传值文章中有)

//TwoViewController.h

#import <UIKit/UIKit.h>
@class TwoViewController;
//声明代理方法
@protocol TwoViewControllerDelegate <NSObject>
- (void)twoViewControllerBackItems:(TwoViewController *)twoViewController setTitle:(NSString *)string;
@end

@interface TwoViewController : UIViewController

//声明代理属性
@property (nonatomic, weak) id<TwoViewControllerDelegate>delegate;
@end

//TwoViewController.h

#import "TwoViewController.h"
@class OneViewController;
@interface TwoViewController ()
@end
@implementation TwoViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];

//设置返回按钮
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStyleDone target:self
action:@selector(btnClick)];
}

//设置点击事件,触发代理方法
- (void)btnClick{
[self.delegate twoViewControllerBackItems:self setTitle:@"第一个按钮"];

[self.navigationController popViewControllerAnimated:YES];
}
//OneViewController.m

#import "OneViewController.h"
#import "TwoViewController.h"
@interface OneViewController ()<TwoViewControllerDelegate>
@end
@implementation OneViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
}

//跳转到第二个页面
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

TwoViewController *twoViewController = [[TwoViewController alloc]init];
[self.navigationController pushViewController:twoViewController animated:YES];
//绑定代理
twoViewController.delegate = self;
}

//实现代理方法
- (void)twoViewControllerBackItems:(TwoViewController *)twoViewController setTitle:(NSString *)string{

//将导航条标题改变
self.navigationItem.title = string;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: