#iphone #view #navigation
#iPhone #Вид #навигация
Вопрос:
Как новичку в objective-c и IOS, мне труднее всего разобраться в том, как загружать новые представления и переключаться между тем, что я хочу отобразить пользователю на разных этапах работы приложения.
Я начал с создания приложения с контроллером панели вкладок внизу и панелью навигации вверху, я понял это и как загружать разные представления для каждого элемента панели вкладок.
Однако я хочу расширить приложение, чтобы произошло следующее,
Пользователь загружает приложение, сначала появляется обычный экран входа в систему, если пользователь вводит правильные данные, приложение переходит к моей текущей настройке панели вкладок и панели навигации, если они вводят неправильные данные, они переходят на обычную страницу ошибок.
Итак, я не уверен, что мне нужно изменить в моем приложении для достижения этого, нужно ли мне создать новое окно и поместить в него представление для экрана входа в систему, а затем как мне загрузить мою текущую настройку?
Должен ли я изменить свой основной интерфейс на новое окно? Или мне нужно изменить мой текущий MainWindow.xib, чтобы загрузить представление входа, а затем заново создать мою текущую настройку в другом файле xib?
Ответ №1:
Обычно мы можем использовать одно UIWindow только в iPhone SDK.Итак, мы должны обрабатывать все вещи через одно UIWindow.Вы можете использовать следующий код в вашем файле AppDelegate.m.Когда пользователь нажимает кнопку входа, вы можете удалить страницу входа и отобразить контроллер панели вкладок
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Override point for customization after app launch
[window addSubview:viewController.view];// you log in page
[window addSubview:tabController.view];//Your Tab bar controller
[window makeKeyAndVisible];
}
-(IBAction)Login_buttonClicking
{
[viewController.view removeFromSuperview];
}
Ответ №2:
Как вы, возможно, уже знаете, представления обычно управляются соответствующими подклассами UIViewController. Они могут представлять свои представления несколькими способами, например, модальным (новое представление скользит вверх и закрывает предыдущее представление), на вкладке UITabBarController или как часть навигационного интерфейса с UINavigationController. Что касается вашего случая, я рекомендую загрузить ваш стандартный контроллер панели вкладок и позволить ему модально отображать ваш вид входа в систему. Когда пользователь нажимает кнопку входа, модальное представление закрывается и скользит вниз, чтобы показать фактическое содержимое в контроллере панели вкладок:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
LoginViewController *loginViewController = [[LoginViewController alloc] init];
[tabBarController presentModalViewController:loginViewController animated:NO];
[loginViewController release];
[window addSubview:tabBarController.view];
[window makeKeyAndVisible];
}
Затем кнопка входа в LoginViewController должна вызывать:
- (void)loginSuccessful {
[self.parentViewController dismissModalViewController];
}
Это решение позволяет экрану входа закрывать вид контроллера панели вкладок при запуске приложения и заставит его соскользнуть с экрана, когда пользователь войдет в систему.