我不确定如何实现这一点,因此我问这个问题。
我有2个名为abVC
和xyVC
的ViewController(VC)。
abVC
仅包含TableView
,xyVC
仅包含一个按钮。
当我点按xyVC
上的按钮时,它应该在abVC
内重新加载tableview,而不会移动到abVC
。
有可能吗?如果是..那么请帮助我,怎么做?
答案 0 :(得分:4)
你可以同时使用阻止和NSNotification。
使用块可以按如下方式实现:
在xyzVC.h中创建如下属性:
@property(strong,nonatomic)void(^callBack)();
在xyzVC.m
中合成此属性@synthesize callBack
在按钮点击事件
中调用此块- (IBAction)btnClick:(UIButton *)sender {
if (callBack)
{
callBack();
}
}
在你想要回电的abcVC中实现它:
[abVC setCallBack:^{
//reload your tableview here
}];
使用NSNotification,您可以按如下方式实施:
注册接收abcVC.m中的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTableView) name:@"ReloadTable" object:nil];
- (void)reloadTableView{
// Reload your tableview here
}
现在发布xyzVC的通知
- (IBAction)btnClick:(UIButton *)sender {
[[NSNotificationCenter defaultCenter] postNotificationName:@"ReloadTable" object:nil];
}
注意:如果您正在使用NSNotification,请不要忘记在取消视图控制器时将其删除
我希望这会对你有所帮助:)。
答案 1 :(得分:1)
在按钮操作方法中添加此行
[[NSNotificationCenter defaultCenter] postNotificationName:@"ReloadTable" object:nil];
将此代码添加到已实现表格的位置,因此在abVC
:
viewDidLoad
内: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadTableViewData) name:@"ReloadTable" object:nil];
- (void)reloadTableViewData{
[self.myTableView reloadData];
}
dealloc
方法(以防止崩溃) - (void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"ReloadTable" object:nil];
}