#objective-c #uitabbarcontroller
Вопрос:
У меня есть контроллер панели вкладок, который содержит 3 контроллера представлений, и в 1 из этих контроллеров представлений у меня есть кнопка для представления другого контроллера представлений, отсутствующего в контроллере панели вкладок. Функции в кнопке выполняются, но другой контроллер представления не отображается. Чтобы быть более конкретным, 3 контроллера просмотра на панели вкладок-это страница профиля, страница профиля редактирования и страница профиля всех пользователей. И на странице моего профиля у меня есть кнопка выхода, чтобы вернуться к экрану входа в систему, который не является частью панели вкладок.
Вот мой код:
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
// last login
NSString * username = [[NSUserDefaults standardUserDefaults] objectForKey:@"SessionKey"];
Users* lastUser =[LocalStorageController loadCustomObjectWithKey:username];
ProfilePage *lastUserProfile = [[ProfilePage alloc] initWithUser:lastUser];
EditProfile *lastUserEdit = [[EditProfile alloc]initWithUser:lastUser];
AllUsersProfile *lastUserViewAll = [[AllUsersProfile alloc]init];
UITabBarController *tabBarController = [[UITabBarController alloc] init];
NSArray *viewControllers = [NSArray arrayWithObjects:lastUserProfile,lastUserEdit,lastUserViewAll,nil];
[tabBarController setViewControllers:viewControllers animated:NO];
[tabBarController release];
self.window.rootViewController = tabBarController;
lastUserEdit.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Edit Profile" image:nil selectedImage:nil];
lastUserProfile.tabBarItem =[[UITabBarItem alloc] initWithTitle:@"Home" image:nil selectedImage:nil];
lastUserViewAll.tabBarItem =[[UITabBarItem alloc] initWithTitle:@"View Others" image:nil selectedImage:nil];
А вот код для выхода из системы:
- (void) logOut{
[self dismissViewControllerAnimated:YES completion: nil]; //this does not show the LoginScreen view controller
}
Ответ №1:
Пожалуйста, проверьте текущий код, чтобы представить новый контроллер в контроллерах панели вкладок.
// У вас есть три UIViewController
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
ViewControllerTab1 * tabVC1 = [[ViewControllerTab1 alloc] init];
ViewControllerTab2 * tabVC2 = [[ViewControllerTab2 alloc] init];
ViewControllerTab3 * tabVC3 = [[ViewControllerTab3 alloc] init];
UITabBarController *tabBarController = [[UITabBarController alloc] init];
NSArray * viewControllers = [NSArray arrayWithObjects:tabVC1, tabVC2, tabVC3, nil];
[tabBarController setViewControllers:viewControllers animated:NO];
self.window.rootViewController = tabBarController;
tabVC1.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Edit Profile" image:nil selectedImage:nil];
tabVC2.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"Home" image:nil selectedImage:nil];
tabVC3.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"View Others" image:nil selectedImage:nil];
}
В ViewControllerTab1 представьте новый контроллер ViewController, который вам нужен в соответствии с вашими требованиями
-(void)presentAnotherVC{
NewViewController * vc = [[NewViewController alloc]init];
[self presentViewController:vc animated:YES completion:nil];
}
В NewViewController отключите NewViewController, чтобы вернуться к выбранному контроллеру панели вкладок
-(void)dsmissThisVC{
[self dismissViewControllerAnimated:YES completion:nil];
}