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: 代表和数据源