Путаница в отношении initWithNavigationBarClass - как использовать (новый метод instanceType)
Это отлично работает:
UINavigationController *nc =
[[UINavigationController alloc]
initWithNavigationBarClass:[GTScrollNavigationBar class]
toolbarClass:[UIToolbar class]];
nc.viewControllers = @[firstPage];
self.window.rootViewController = nc;
но это работает не:
UINavigationController *nc =
[[UINavigationController alloc]
initWithNavigationBarClass:[GTScrollNavigationBar class]
toolbarClass:[UIToolbar class]];
self.window.rootViewController = nc;
self.window.rootViewController.viewControllers = @[firstPage]; // ERROR
как это может быть? Благодаря
Ответы
Ответ 1
self.window.rootViewController.viewControllers = @[firstPage];
не компилируется, поскольку объявлено свойство rootViewController
UIWindow
как (общий) UIViewController
(который не имеет свойства viewControllers
), а не как UINavigationController
.
Компилятор не "знает", что контроллер корневого представления фактически является навигацией
контроллер в вашем случае.
Итак, либо вы действуете так же, как в первом кодовом блоке, или вам нужно добавить явное выражение:
((UINavigationController *)self.window.rootViewController).viewControllers = @[firstPage];