我有一个充满自定义单元格的表格视图。在每个单元格中都有两个按钮,如果我按下第一个按钮,我会导航到另一个视图,我们称之为 secondview。
在我的第二个视图中,有一个按钮与上一个表格视图中的单元格上的第二个按钮具有相同的功能。当我按下第二个视图上的按钮时,我将其隐藏,但我也想隐藏单元格上的第二个按钮。
但是注意!我只想隐藏我按下第一个按钮的这个特定单元格上的第二个按钮,而不是全部!
我怎样才能做到这一点?提前致谢!
您应该将第一个视图作为委托传递给第二个视图,当在第二个视图中进行更改时,您将调用第一个视图hideSecondButton
或您所做的任何 mwthod。无论如何,您的问题的关键字是delegate
.
实现这一点的最简单方法是使用通知。在模型更改时在您的数据模型上发布通知。
[[NSNotificationCenter defaultCenter] postNotificationName:@"fooModelChanged" object:self];
在您想要侦听模型fooModelChanged
通知的视图和视图控制器上添加此内容并实现侦听器方法。
- (void)viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fooModelHasChanged:) name:@"fooModelChanged" object:fooModel];
}
- (void)fooModelHasChanged:(NSNotification*)notification {
// Add buttons, remove buttons or simply...
[self.tableView reloadData];
}
可以通过使用委托以更好的方法解决该问题。但解释和实施需要更长的时间。我建议你阅读更多的 Objective-C 代码来理解监听器的实现。
@Cernal,“object:fooModel”是指“fooModel.xcdatamodeld”还是我错过了什么?