我有一个显示简单tableview的应用程序,我也想添加SWRevealViewController。
在我的appDelegate中,在我添加SWReveal VC之前,我正在设置我的tableViewController,就像这样......
在didFinishLaunchingWithOptions中:
STRTableViewController *tableViewController = [(UINavigationController *)self.window.rootViewController viewControllers][0];
self.delegate = tableViewController;
然后再按以下方法:
- (void)loadTableViewData
{
UINavigationController *navVC = (UINavigationController *)self.window.rootViewController;
STRTableViewController *tableVC = navVC.childViewControllers[0];
[tableVC loadTableData]
}
显然,当我将SWRevealViewController放到行的前面时,这不再有效,因为它现在试图从错误的视图控制器调用loadTableData。
我已经尝试了几种方法并且不断出现。现在,如果它不是第一个视图控制器,我该如何访问tableViewController?
如果您需要更多代码或日志或其他任何内容,我们很乐意发布其他信息。我觉得答案就在那里,我只是没有经验可以看到它。
另外,为了清楚起见,现在在故事板中它从Reveal View Controller到导航控制器(tableview的导航VC / sw_front)以及sw_rear VC。之前它只是从导航控制器开始。
谢谢!
答案 0 :(得分:1)
有很多方法可以保留对此的参考。
最简单的方法是在AppDelegate.m
所以你添加了一个属性
@property (nonatomic, strong) STRTableViewController *tableViewController;
然后,无论何时何地您实例化并设置该表视图控制器,只需执行以下操作:
AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
delegate.tableViewController = justCreatedTableViewController;
您需要#import "AppDelegate.h"
来访问您要执行此操作的其他课程中的应用代理。
然后要访问它,您可以执行以下操作:
- (void)loadTableViewData
{
[self.tableViewController loadTableData]
}