iPhone: Как заставить UINavViewController не выдвигать контроллер представления, когда пользователь нажимает на уже выбранную вкладку - PullRequest
2 голосов
/ 14 февраля 2010

У меня есть панель вкладок, и каждый из контроллеров представления вкладок является контроллером навигации. Если вы нажмете на вкладку, которая уже выбрана, она вернет контроллер представления назад. для одной вкладки, я хочу, чтобы этого не произошло. Из чего я делаю делегата? Я попытался переопределить

-(UIViewController *)popViewControllerAnimated:(BOOL)animated

в контроллере nav возвращает 0, но это не останавливает его от появления!

Ответы [ 2 ]

1 голос
/ 14 февраля 2010

user74574 близко, но вы не должны возвращать ноль, вы должны вернуть НЕТ. Да, технически они оба одинаковы в терминах битов, типы битов имеют значение и игнорируют, что приведет (в зависимости от ситуации) к предупреждениям и / или ошибкам, которые могут быть обнаружены посредством статического анализа. То, что вы хотите реализовать в вашем делегате, должно выглядеть примерно так:

- (BOOL)tabBarController:(UITabBarController *)tabBarController_ shouldSelectViewController:(UIViewController *)viewController {
  if (viewController == tabBarController_.selectedViewController) {
    return NO;
  } else {
    return YES;
  }
}
0 голосов
/ 14 февраля 2010

Вы можете сделать это, создав подкласс UITabBarController и установив его как UITabBarControllerDelegate для себя.

Реализуйте tabBarController:shouldSelectViewController:, проверяя, выбирает ли он контроллер представления, который вас интересует, и если он уже выбран. return nil, если оно удовлетворяет вышеуказанному.

Если вы хотите, я могу собрать некоторый фактический код, но это должно привести вас в правильном направлении.

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