Проблемы с доступом к rootviewController из navcontroller iphone - PullRequest
2 голосов
/ 02 февраля 2010

Я работаю на примере сейсмического xml iphone. В этом примере просто есть делегат приложения, у которого есть rootViewController типа UITableViewController.

Я хотел немного изменить его, чтобы у меня был навигационный контроллер и использовать его rootViewController в качестве табличного представления. Мой класс контроллера корневого представления для моего контроллера навигации называется "firstLevelViewController"

В примере кода написано

 [rootViewController.tableView reloadData];

Я хочу сказать [navController.firstLevelViewController.tableView reloadData]

но я получаю ошибки, говоря: «запрос на член firstLevelViewController не является структурой или объединением»

Как я могу ссылаться на rootViewController контроллера навигации от основного делегата приложения?

Ответы [ 2 ]

3 голосов
/ 02 февраля 2010

В UINavigationController нет свойства firstLevelViewController. Если вы хотите получить доступ к текущему контроллеру, вы можете использовать

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

Если firstLevelViewController означает контроллер вида внизу, вы можете использовать

UITableViewController* firstLevelViewController = [navController.viewControllers objectAtIndex:0];
....
0 голосов
/ 18 июня 2015

Доступ к rootViewController выглядит следующим образом:

Objective-C

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

Swift

let appDelegate  = UIApplication.sharedApplication().delegate as AppDelegate
let viewController = appDelegate.window!.rootViewController as YourViewController
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...