Модальный интерфейс Viewcontroller не реагирует после presentViewController: анимированный: завершение:

Мое приложение имеет корневой диспетчер представлений, который в начале приложения отображается

  • login viewController view, если пользователь не вошел в систему
  • main viewController view, если пользователь вошел в систему

Код 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.

Проблема в том, что после представления mainviewController я не могу взаимодействовать с каким-либо элементом пользовательского интерфейса. Например, у меня есть 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! 

Итак, посмотрев обновленный код, я вижу, что у вас есть rootViewController и динамически даю представление, которое, по вашему мнению, должно быть представлено. Дело в том, что rootViewController отвечает за корневой режим, в то время как ваши два других диспетчера представлений управляют своими собственными представлениями. Вы не должны передавать другой вид контроллера контроллера.

Поэтому, в конце концов, похоже, что вы хотите условно установить свой rootviewcontroller. Поэтому давайте посмотрим на делегат приложения. Я думаю, вы должны сделать, чтобы ваш делегат приложения сделал что-то вроде этого. Определите его во время выполнения, которым должен управлять viewController. Затем сделайте это rootviewcontroller для приложения.

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIViewController * resolvedRootViewController = [self someMethodThatCorrectlyGivesRootViewController]; self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.rootViewController = resolvedRootViewController; [self.window makeKeyAndVisible]; return YES; } 
Interesting Posts

Apple Watch openparentapplication: ответ: получает домен ошибок = FBSOpenApplicationErrorDomain Code = 5

Создайте анимацию встряхивания для UIAlertView

Как перейти на панель набора номера в iOS

tableView: cellForRowAtIndexPath: получать вызов не только для видимых ячеек?

Удалено NSManagedObject, правильно удаленное из таблицы, затем появляется при сохранении

Как открыть другое устройство без использования Gamekit, EAaccessory и базовой инфраструктуры Bluetooth в iOS?

Предотвращение открытия универсальных ссылок в `WKWebView` /` UIWebView`

Инвертировать пиксели – zxing

MVVMCross iOS: как связать команду с пользовательским переходом при переключении на другую модель просмотра

Приложение iOS Готов к продаже, но не появляется в магазине

ios silent push уведомление, когда пользователь отказывается от авторизации Push

Идентификатор доступности не отображается в Accessibility Inspector с iOS Simulator

Как отсортировать контакты, используя Контакты с Swift

CloudKit: заказывать результаты запроса по дате создания

Ошибка, основные данные, причина: *** – : index (2) за пределами границ (2) '

Давайте будем гением компьютера.