iPhone — Как правильно настроить навигацию приложения для разных типов представлений / окон?

#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];
}
  

Это решение позволяет экрану входа закрывать вид контроллера панели вкладок при запуске приложения и заставит его соскользнуть с экрана, когда пользователь войдет в систему.