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 <NSObject> @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]; } }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。