Мое приложение имеет корень ViewController, который в начале Приложение отображаетМодальные ViewController UI не реагирует после presentViewController: анимированный: завершение:
- просмотреть Войти ViewController если пользователь не вошел в систему
- основной вид ViewController если пользователь вошел в систему
AppDelegate код:
- (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 представлена.
Проблема заключается в том, что после представления main 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!
Где находится метод просмотра, который вы перестроили? В делегате приложения? Я чувствую, что динамическое возвращение такого вида не является правильным. Вы всегда должны указывать или представлять свой следующий контроллер представлений, который каркас должен автоматически отображать для вас, вам не нужно указывать, какой вид его представить. – feliun
@feliun, просмотрите мой обновленный ответ. Я не упомянул, что раньше использовал этот подход в нескольких приложениях, и он работал безупречно. Это первый раз, когда я получил эту ошибку. – NikGreen