#iphone #uitabbarcontroller #uitabbar #modalviewcontroller #presentmodalviewcontroller
#iPhone #uitabbarcontroller #uitabbar #modalviewcontroller #presentmodalviewcontroller
Вопрос:
Мое приложение основано на представлении. Первый вид — это вид входа в систему. После просмотра входа в систему у меня есть MainMenuCcontroller, в котором есть TabBarController:
@interface RunnoMainMenuController : UIViewController {
IBOutlet UITabBarController *tabBarController;
}
Из контроллера представления входа я перехожу в MainMenuController, используя эту строку кода:
[self presentModalViewController:mainMenu animated:YES];
этот контроллер имеет 4 вкладки. Теперь мне нужно кое-что сделать в viewWillAppear элемента TabBarItem. viewWillAppear не вызывается, когда я нажимаю на TabBarItem. У меня есть кнопка в одном из этих представлений TabBarItem, которая выводит контроллер представления таблицы с использованием presentModalViewController. Этот TableView использует dismissModalViewControllerAnimated:YES, чтобы удалить его. Когда я открываю этот tableview и отклоняю его, viewWillAppear каждого элемента TabBarItem работает нормально. Если я отклоню modalViewController в MainMenuController, он снова вернется к просмотру входа. Как я могу отклонить modalViewController, не выходя из текущего представления или любого другого решения? Заранее спасибо.
Ответ №1:
Возможно, вам потребуется рассмотреть, как представлены ваши представления. Контроллер панели вкладок всегда должен быть контроллером корневого представления окна. Из документов Apple:
При развертывании интерфейса панели вкладок вы должны установить это представление в качестве корня вашего окна. В отличие от других контроллеров представления, интерфейс панели вкладок никогда не должен устанавливаться как дочерний элемент другого контроллера представления.
Вместо того, чтобы представлять свой вид входа в систему как корневой вид, а панель вкладок — как контроллер модального представления, попробуйте наоборот. Контроллер панели вкладок как root, с представлением входа в систему, представленным как контроллер модального представления из контроллера представления любой вкладки, которая отображается изначально. Отклонение этого приведет к открытию контроллера панели вкладок.