IOS SDK только один вид изменений за один раз ошибка - PullRequest
0 голосов
/ 04 июня 2011

Я выдвигаю несколько представлений:

  • верхний из них - UITabBarController
  • второй - UINavigationController с выдвинутым представлениемтретий - модальное поле.

После нажатия кнопки закрытия в модальном окне я пытаюсь вернуть все в состояние по умолчанию и изменить индекс панели вкладок.

[self dismissModalViewControllerAnimated:YES];
[self.navigationController popViewControllerAnimated:NO];     
[self.tabBarController setSelectedIndex:3];

Это отклоняет модальное представление, но больше ничего не делает.Есть идеи, что может быть не так?Я читал что-то о возможной ошибке IOS, но я не знаю, как ее обойти.

Ответы [ 2 ]

1 голос
/ 04 июня 2011

Ни UITabBarController, ни UINavigationController не является представлением.Оба являются подклассами UIViewController и имеют свойство NSArray *viewControllers.

Если у вас есть actualView, управляемый ActualViewController, который помещается поверх rootView, контролируемого RootViewControllerэто rootViewController для navigationController, и у вас также есть modalView, управляемый ModalViewController, затем поместите

[self dismissModalViewControllerAnimated:YES];

в ModalViewController.m и положите

[self.navigationController popViewControllerAnimated:NO];

в ActualViewController.m (откуда, предположительно, modalView выдвигается), и

[self.tabBarController setSelectedIndex:3];

в RootViewController.m (откуда, предположительно, actualView выдвигается).

Если modalViewController никогда не был добавлен к navigationController, то он не знает, что navigationController существует.

Если actualViewController никогда не добавлялся к tabBarController, то онне знает, что tabBarController существует.

0 голосов
/ 04 июня 2011

Простой (и грязный) способ: Отклонить модальное представление в модальном представлении. Сделайте контроллер представления навигации делегатом модального представления. Сделайте контроллер панели вкладок делегатом контроллера навигации. Когда кнопка нажата, вызовите метод в контроллере навигации, который открывает представление и вызывает метод контроллера панели вкладок, который изменяет выбранную вкладку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...