Установите условие, которое должно быть выполнено, прежде чем пользователь перейдет на другую вкладку - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть ситуация, когда мне нужно убедиться, что пользователь выполнил определенные шаги, прежде чем перейти на другую вкладку внутри UITabBarController.Поэтому, если пользователь находится в середине чего-то и нажимает на другую вкладку, я хотел бы показать UIAlertView, говорящее «вы должны заполнить бла-бла-бла, прежде чем перейти на другую вкладку».

Возможно липроверить это условие и отменить переход на другой контроллер вида?

Ответы [ 2 ]

3 голосов
/ 08 февраля 2012

Конечно, вы можете. Я полагаю, у вас есть контроллер вкладок в классе AppDelegate. Если это так, установите AppDelegate в качестве его делегата. Затем реализовать следующий метод

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
  // place all the checks here
  EditingViewController *editingController = //link to controller where editing is being made.
  if (editingController && editingController.isEditing) {
    //UIAlertView
    return NO;
  }
  return YES;
}
0 голосов
/ 08 февраля 2012

Можно предположить, что вы могли бы попытаться поймать представление о его выходе и изменить выбранный индекс на контроллере панели вкладок, чтобы он соответствовал виду, в котором вы хотите их сохранить:

- (void)viewWillDisappear:(BOOL)animated {
   self.tabBarController.selectedIndex = 0;
}

Вы можете обнаружить, что этохотя немного вяло, хотя в зависимости от порядка событий быстрый гугл обнаружил, что если вы можете сделать свой контроллер представления UITabBarControllerDelegate, то вы можете реализовать:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

, что позволит вам отлавливать их раньше.Возможно, вам будет проще реализовать это в приложении «Делегат» и узнать (или проверить), должно ли это позволить изменение.

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