UITableView : popViewController 并将行索引保留到父控制器中?
Posted
技术标签:
【中文标题】UITableView : popViewController 并将行索引保留到父控制器中?【英文标题】:UITableView : popViewController and keep row index into parent controller? 【发布时间】:2012-05-26 14:28:33 【问题描述】:我有以下配置:
一个 ViewController parentController 包含一个 TableView parentTable 和自定义单元格以在每个单元格中显示 2 个标签。
一个 ViewController childController 包含一个 TableView childTable。当用户点击controllerParent的一个cell时会显示这个view,childTable的内容依赖于选中的parentController cell。 我用这个方法:
[self.navigationController pushViewController:controleurEnfant animated:YES];
现在,当我单击 childTable 中的一个单元格时,我会返回到以前的视图:
[self.navigationController popViewControllerAnimated:YES];
当然,我可以很容易地选择 childTable 的行的索引。但是我唯一不知道的是当我回到那里时如何保留这些数据以在 parentController 中使用它?
感谢您的帮助...
【问题讨论】:
【参考方案1】:对于这种问题,你可以使用委托
来自RayWenderlichs Tutorial的代码:
.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 in 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];
这里有一些关于委托模式的文档:Delegates and Data Sources
【讨论】:
委托确实是关键。然而,这个例子似乎不太合适。 好的,将答案修改为不那么笼统,更具体地解决问题。以上是关于UITableView : popViewController 并将行索引保留到父控制器中?的主要内容,如果未能解决你的问题,请参考以下文章
UItableview 单元格的动态高度与 UItableview 单元格内的 UItableview
水平 UITableView 中的垂直 UITableView