我在 IOS 7 应用程序中使用 SWRevealViewController 类。
我有一个前 View (MainHP_TableViewController) 和一个后 View (messagesTVController),向右滑动会显示左 View 以显示消息。
我的问题是我需要在关闭显示时在前 View 中触发一个方法(基本上消息计数需要更新)。
我在 SWRevealViewController 中找到了一个操作来附加一个事件触发器,并在我的主视图 Controller 中设置了一个方法来接收它,如下所示 -
swRevealViewController.m
MainHP_TableViewController *mhp = [[MainHP_TableViewController alloc] initWithNibName:nil bundle:nil];
[mhp readyBtn];
MainHP_TableViewController.m
- (void)readyBtn{
NSLog(@"passed back");
_btnNo = 1;
// NSLog(@"Value of hello = %@", _btnNo);
//[self.tableView reloadData];
}
发生的事情是滑动操作事件有效并且传回的消息出现在控制台中 - _btnNo var 更改为 1 - 但如果我取消注释 NSLog 行或重新加载数据行(上面的屏幕截图)应用程序崩溃.. 控制台中没有任何错误令人讨厌..
我可以从 MainHP_TableViewController 本身的按钮调用相同的方法并且一切正常 - 所以我猜测它是从另一个 Controller 调用的方法的某种权限问题?但这让我很头疼 - 所以任何提示都非常受欢迎!
最佳答案
我觉得用NSNotificationCenter
应该会更好;
在前面的 View Controller 中,您可以在 viewDidLoad
中注册观察者,例如:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(notificationRecived:)
name:@"reloadData"
object:nil];
并放置选择器方法:
- (void)notificationRecived:(NSNotification *)notification {
if([notification.name isEqualToString:@"reloadData"]) {
// Do stuff here
// [self.tableView reloadData];
}
}
在后 View Controller 中,您可以简单地发布通知:
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadData" object:nil userInfo:nil];
关于IOS Reveal View - 在另一个 UIViewController 中触发函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22940590/