3

我有以下配置:

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

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

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

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

[self.navigationController popViewControllerAnimated:YES];

当然,我可以很容易地选择 childTable 的行的索引。但是我唯一不知道的是当我回到那里时如何保留这些数据以在 parentController 中使用它?

谢谢你的帮助...

4

1 回答 1

3

对于此类问题,您可以使用委托

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];

这是关于委托模式的一些文档:委托和数据源

于 2012-05-26T16:02:47.993 回答