2013-09-25 3 views
0

У меня есть приложение для iPad (XCode5, ARC, iOS7, Storyboards с UITabBarController, контролирующим навигацию). На одном взгляде у меня есть некоторые обязательные поля, которые я проверяю в -viewWillDisappear; если один из них отсутствует, отображается предупреждение. Проблема в том, что мне нужно оставаться на этой точке зрения, пока она не будет исправлена. К сожалению, единственное место, где я могу проверить требуемые поля, находится в -viewWillDisappear.Как запретить пользователю покидать контроллер просмотра?

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

+0

как вам оставить представление? через нажатие кнопки? Нажимает ли кнопка на сегмент? – micantox

+0

всегда можно убить ваше приложение из многозадачности, надеюсь, –

+0

Забыл упомянуть, я использую UITabBarController; пользователь может перейти с одной вкладки на другую ... нет кнопки «назад». Я не хочу «убивать» приложение, я хочу остаться в этом представлении, пока пользователь не исправит ошибку. – SpokaneDude

ответ

2

Вам нужно сделать

self.tabBarController.delegate = self 

в вашем viewdidload и затем реализовать метод делегата

- (BOOL)tabBarController:(UITabBarController *)tabBarController 
shouldSelectViewController:(UIViewController *)viewController 
{ 
    if(conditions_satisfied) 
     return YES; 
    else 
    { 
     //show alert view here 
     return NO; 
    } 
} 

EDIT: Казалось бы, что rdelmar был быстрее, чем я :)

+0

Вот и все! Я отдам его и вернусь к вам ... как я указал ниже, после всех этих лет программирования в Obj-c, я до сих пор не совсем понимаю делегатов! : - { – SpokaneDude

+0

Возможно, но он не дал мне никакого кода для работы с ... Q: Я предполагаю, что вышеуказанный код попадает в viewController, который выполняет проверку отсутствующих полей, да? – SpokaneDude

+0

да, в дополнение, вам нужно будет написать '', чтобы указать, что вы принимаете протокол – micantox

1

Вы можете установить делегат для контроллер панели вкладок и вернуть NO из tabBarController: shouldSelectViewController: до тех пор, пока не будут выполнены какие бы то ни было условия.

+0

Это звучит неплохо. Однако делегаты не являются моими сильными сторонами (теперь мы работаем с Obj-C для около 2 лет, и я просто не могу обдумать их). Позвольте мне попробовать еще раз, и я вернусь к вам. – SpokaneDude

Смежные вопросы