你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 匯總ios開發逆向傳值的方法

匯總ios開發逆向傳值的方法

編輯:IOS開發綜合

iOS的逆向傳值有很多種方法,下面來總結幾種常用的傳值方式(只貼相關代碼):

第一種:代理傳值
第二個控制器:

@protocol WJSecondViewControllerDelegate <NSObject>
- (void)changeText:(NSString*)text;
@end
 @property(nonatomic,assign)id<WJSecondViewControllerDelegate>delegate;

- (IBAction)buttonClick:(UIButton*)sender {
_str = sender.titleLabel.text;
[self.delegate changeText:sender.titleLabel.text];
[self.navigationController popViewControllerAnimated:YES];
}

第一個控制器:

- (IBAction)pushToSecond:(id)sender {
WJSecondViewController *svc = [[WJSecondViewController alloc]initWithNibName:@"WJSecondViewController" bundle:nil];
svc.delegate = self;
svc.str = self.navigationItem.title;
[self.navigationController pushViewController:svc animated:YES];
[svc release];
}
- (void)changeText:(NSString *)text{
self.navigationItem.title = text;
}

第二種:通知傳值
第一個控制器:

 //注冊監聽通知
 [[NSNotificationCenter defaultCenter] addObserver:self     selector:@selector(limitDataForModel:) name:@"NOV" object:nil];
- (void)limitDataForModel:(NSNotification *)noti{
self.gamesInfoArray = noti.object;
}

第二個控制器:

//發送通知
 [[NSNotificationCenter defaultCenter]   postNotificationName:@"NOV" object:gameArray];

第三種:單例傳值
Single是一個單例類,並且有一個字符串類型的屬性titleName
在第二個控制器:

- (IBAction)buttonClick:(UIButton*)sender {
Single *single = [Single sharedSingle];
single.titleName = sender.titleLabel.text;
[self.navigationController popViewControllerAnimated:YES];
}

第一個控制器:

- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
Single *single = [Single sharedSingle];
self.navigationItem.title = single.titleName;
}

第四種:block傳值
第二個控制器:

@property (nonatomic,copy) void (^changeText_block)(NSString*);
- (IBAction)buttonClick:(UIButton*)sender {
_str = sender.titleLabel.text;
self.changeText_block(sender.titleLabel.text);
[self.navigationController popViewControllerAnimated:YES];
}

第一個控制器:

- (IBAction)pushToSecond:(id)sender {
WJSecondViewController *svc = [[WJSecondViewController alloc]initWithNibName:@"WJSecondViewController" bundle:nil];
svc.str = self.navigationItem.title;
[svc setChangeText_block:^(NSString *str) {
  >self.navigationItem.title = str;
}];
[self.navigationController pushViewController:svc animated:YES];
}

第五種:extern傳值
第二個控制器:

 extern NSString *btn;
- (IBAction)buttonClick:(UIButton*)sender {
btn = sender.titleLabel.text;
[self.navigationController popViewControllerAnimated:YES];
}

第一個控制器:

NSString *btn = nil;
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.navigationItem.title = btn;
}

第六種:KVO傳值
第一個控制器:

- (void)viewDidLoad {
[super viewDidLoad];
 _vc =[[SecondViewController alloc]init];
//self監聽vc裡的textValue屬性
[_vc addObserver:self forKeyPath:@"textValue" options:0 context:nil];  
}

第二個控制器:

- (IBAction)buttonClicked:(id)sender {
self.textValue = self.textField.text;
[self.navigationController popViewControllerAnimated:YES];
}

其實還有很多種傳值方式,比如說NSUserDefaults,先把數據保持在本地,再讀取,或者寫入plist及其它類型的文件再讀取等等許多方式,在這裡就不一一列舉了!這些代碼寫的時間比較久了,今天整理了一下,還比較亂,有什麼不對或不足的地方請見諒!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved