IOS Reveal View - 在另一个 UIViewController 中触发函数

标签 ios objective-c uitableview

我在 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/

相关文章:

iOS:更改未选定选项卡的 TabBarItem

ios - 在 objective-c 中传回数据的正确方法

objective-c - UICollectionView 不重新加载单元格的 imageView

ios - 将 indexpath 标记传递给 tableview 中原型(prototype)单元格内的按钮

ios - 加载 TableView 时项目出错

ios - 存储不同 NSData 时 Realm 文件大小差异过大

iphone - 如何在ios中获取州,国家列表

ios - 动态高度标签和文本字段

ios - accessoryButtonTappedForRow 在模拟器上调用但不在设备上调用

ios - 将 xib 文件作为 UITableViewController 中的 header 添加到 UITableView