ios兩視圖間委託(delegate)傳值
現有兩個視圖(ViewController,ViewController1),從ViewController中帶參數跳轉到ViewController1,在ViewController1選中資料後帶有效資料後退到ViewController中,委託實現上述功能。
項目:點擊下載
一、ViewController主要代碼
// 按鈕點擊事件-(IBAction)clickSearchBtn:(id)sender { [[[UIApplication sharedApplication] keyWindow] endEditing:YES]; ViewController1 *_viewController = [[[ViewController1 alloc] init] autorelease]; _viewController.delegate = self; _viewController.transText = self.textField.text; [self.navigationController pushViewController:_viewController animated:YES];}// ViewController1Delegate 的代理方法-(void)selectData:(NSString*)text{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ [self.listArray removeAllObjects]; for (int i=0; i<5; i++) { [self.listArray addObject:[NSString stringWithFormat:@"第%d行資料:%@_%d",i+1,text,arc4random_uniform(100)]]; } dispatch_async(dispatch_get_main_queue(), ^{ [self.dataTableView reloadData]; }); });}
二、ViewController1主要代碼
// ViewController1.h// delegate寫在#import之前,否則可能會Delegate Cannot find protocol declaration@protocol ViewController1Delegate;@protocol ViewController1Delegate @optional-(void)selectData:(NSString*)text;@end// ViewController1.m- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ if ([self.delegate respondsToSelector:@selector(selectData:)]) { //通過委託協議傳值 [self.delegate selectData:[self.listArray objectAtIndex:indexPath.row]]; [self.navigationController popViewControllerAnimated:YES]; }}
三、