UITableView:popViewController并保持行索引到父控制器?

我有以下configuration:

一个ViewController parentController,它包含一个带有自定义单元格的TableView parentTable ,以在每个单元格中显示2个标签。

包含TableView子表的 ViewController childController 。 当用户单击controllerParent的一个单元格时,会显示此视图,并且childTable的内容取决于所选的parentController单元格。 我用这个方法:

[self.navigationController pushViewController:controleurEnfant animated:YES]; 

现在,当我点击childTable中的一个单元格时,我回到了以前的视图:

 [self.navigationController popViewControllerAnimated:YES]; 

当然,我可以很容易地得到所选childTable行的索引。 但是我唯一不知道的是当我回来的时候如何让这个数据在parentController中使用呢?

谢谢你的帮助…

对于这种问题,您可以使用委派

来自RayWenderlichs的代码教程 :

.h在你的childViewController中:

 @class ChildViewController; @protocol ChildViewControllerDelegate <NSObject> - (void)childViewControllerDidSelect:(id)yourData; @end @interface childViewController : UITableViewController @property (nonatomic, weak) id <ChildViewControllerDelegate> delegate; - (IBAction)cancel:(id)sender; - (IBAction)done:(id)sender; @end 

.m在childViewController中

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self.delegate childViewControllerDidSelect:myObject]; [self.navigationController popViewControllerAnimated:YES]; } 

在你的parentViewController.h中采用该协议

 @interface ParentViewController : UITableViewController <ChildViewControllerDelegate> 

并实施委托方法

 - (void)childViewControllerDidSelect:(id)yourData { self.someProperty = yourData } 

并且不要忘记在推送之前设置委托:

 ... ChildViewController *vc = [ChildViewController alloc] init]; vc.delegate = self; [self.navigationController pushViewController:vc animated:YES]; 

以下是关于代表团模式的一些logging: 代表和数据源