В моем приложении есть корневой контроллер просмотра, который в начале приложения отображает
- вход в представление viewController, если пользователь не вошел в систему
- главное представление viewController, если пользователь вошел в систему
Код делегата приложения:
- (BOOL) application: (UIApplication*) application
didFinishLaunchingWithOptions: (NSDictionary*) launchOptions
{
self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
self.window.rootViewController = [[RootViewController alloc] init];
[self.window makeKeyAndVisible];
return YES;
}
Вот код, используемый в RootViewController:
@implementation RootViewController
- (void) loadView
{
[super loadView];
// here mainViewController and loginNavigationController are initialized
}
...
- (UIView*) view
{
[super view]; // this invokes loadView
return self.isLoggedIn ? self.mainViewController.view :
self.loginNavigationController.view;
}
....
- (void) userDidLogin
{
[self.loginNavigationController presentViewController: self.mainViewController
animated: YES
completion: nil];
}
@end
Если пользователь не вошел в систему и нажимает кнопку входа, отображается основной viewController.
Проблема в том, что после представления основного viewController я не могу взаимодействовать ни с одним из элементов пользовательского интерфейса. Например, у меня есть tableView в качестве подвида основного viewController, и когда я пытаюсь его прокрутить, я получаю следующее предупреждение в панели отладки:
<UITableView: 0x202a4000; frame = (0 0; 310 548); clipsToBounds = YES;
gestureRecognizers = <NSArray: 0x1fd9f570>; layer = <CALayer: 0x1fdccff0>;
contentOffset: {0, 0}>'s window
is not equal to <RootViewController: 0x1fd9f7d0>'s view's window!