现有两个视图(ViewController。ViewController1),从ViewController中带參数跳转到ViewController1,在ViewController1选中数据后带有效数据后退到ViewController中。托付实现上述功能。
项目:点击下载
一、ViewController主要代码
// button点击事件 -(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]; } }