访问navcontroller iphone的rootviewController的问题

时间:2010-02-02 16:01:00

标签: iphone xcode uinavigationcontroller uitableview

我正在研究地震xml iphone示例。 在该示例中,只有应用程序委托具有UITableViewController类型的rootViewController。

我想略微修改它,以便我有一个navigationController并使用它的rootViewController作为表视图。我的导航控制器的根视图控制器类名为“firstLevelViewController”

在示例代码中说

 [rootViewController.tableView reloadData];

我想说[navController.firstLevelViewController.tableView reloadData]

但是我收到的错误是“请求成员firstLevelViewController中的某些东西不是结构或联合”

如何从主应用程序委托中引用navigationcontroller的rootViewController?

2 个答案:

答案 0 :(得分:3)

firstLevelViewController中没有UINavigationController属性。如果要访问当前控制器,可以使用

UITableViewController* firstLevelViewController = navController.topViewController;
assert([firstLevelViewController isKindOfClass:[UITableViewController class]]);
[firstLevelViewController.tableView reloadData];

如果firstLevelViewController表示底部的视图控制器,则可以使用

UITableViewController* firstLevelViewController = [navController.viewControllers objectAtIndex:0];
....

答案 1 :(得分:0)

像这样访问rootViewController:

<强> 目标C

YourViewController *rootController =(YourViewController*)[[(YourAppDelegate*)
                               [[UIApplication sharedApplication]delegate] window] rootViewController];

<强>夫特

let appDelegate  = UIApplication.sharedApplication().delegate as AppDelegate
let viewController = appDelegate.window!.rootViewController as YourViewController