0

我有一个显示简单表格视图的应用程序,我也想添加 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 到 Navigation Controller(tableview 的 nav VC/sw_front)以及 sw_rear VC。在它只是从导航控制器开始之前。

谢谢!

4

1 回答 1

1

有很多方法可以用来保持对此的引用。

最简单的方法就是在AppDelegate.m

所以你添加一个属性

@property (nonatomic, strong) STRTableViewController *tableViewController;

然后,无论何时何地实例化和设置该表视图控制器,只需执行以下操作:

AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
delegate.tableViewController = justCreatedTableViewController;

您需要#import "AppDelegate.h"在要执行此操作的其他类中访问应用程序委托。

然后要访问它,您可以执行以下操作:

- (void)loadTableViewData
{
   [self.tableViewController loadTableData]
}
于 2014-03-31T20:22:05.640 回答