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

UITableView

水平 UITableView 中的垂直 UITableView

如何与重叠显示的 UITableView 交互另一个 UITableView

在 UITableView 中的 UINib 中重新加载 UITableView