在标签栏控制器类型应用程序中切换 UIViewController

Posted

技术标签:

【中文标题】在标签栏控制器类型应用程序中切换 UIViewController【英文标题】:Switch UIViewController in a Tab Bar Controller Type Application 【发布时间】:2010-08-09 04:27:17 【问题描述】:

请原谅这个简单的问题,但我正在努力掌握 iPhone 中的导航。

所以,我有一个带有 UITabBar 和 3 个 UITabBarItems 的标签栏控制器类型的应用程序。我有第一个标签栏项目加载一种“主屏幕/欢迎”,在主屏幕上有一个按钮。当用户单击按钮时,我想打开一个不同的 UIViewController (LoginViewViewController) 以允许该人登录。

我基本上是在尝试切换 UIViewController,然后当他们成功登录后,我想更改 TabBarItems。

这是我在连接到第一个 TabBarItem 的 ViewController 上的 .m 文件中的代码:

#import "LaunchViewViewController.h"
#import "LoginViewViewController.h"

@implementation LaunchViewViewController

@synthesize myLoginViewViewController;

- (IBAction)cmdRSVP_Click:(id)sender 

 //Try #1
 //[self addSubview:myLoginViewViewController.view];

 //Try #2
 //[[self navigationController] pushViewController:myLoginViewViewController animated:YES];

 //Try #3
 //LoginViewViewController *myLoginViewViewController2 = [[LoginViewViewController alloc] initWithNibName:@"LoginView" bundle:[NSBundle mainBundle]];
 //[self.navigationController pushViewController:myLoginViewViewController2 animated:YES];
 //[myLoginViewViewController2 release];
 //myLoginViewViewController2 = nil;

 //Try #4
 //This just changes my screen to all White (expect the TabBarNavigationController
 //[self.view removeFromSuperview];
 //[self.view insertSubview:self.myLoginViewViewController.view atIndex:0];


 // This displays without issue.
 [self displayMessage:@"RSVP Clicked":@"Switch to Login View"]; 

如您所见,我尝试了 4 种不同的方法,我在各种教程中看到过。

在尝试 1、2、3 中:没有任何反应(没有崩溃或异常),但仍显示警报消息框。

在尝试 4 中,Tab Bar Controller 上方的屏幕区域变为白色并显示警报消息,但它从未显示我的另一个 ViewController。

任何帮助我走上正轨都会很棒!!!

提前致谢! 杰森

【问题讨论】:

尝试 2 和 3 是正确的方法。您的主屏幕是否在 UINavigationController 中? 是的,它在标签栏控制器中。在这种情况下我必须做一些不同的事情吗? 【参考方案1】:

我能够根据我提出的另一个问题弄清楚这一点。

问题是我需要将 UINavigation 控制器连接到选项卡栏项(而不是 UIViewController)。 UIViewController 将成为 UINavigation 控制器的 RootViewController,这将允许我使用 pushViewController 和 popViewController 方法。

注意:这是帮助我解决此问题的问题的链接: TableView Does NOT Switch to Detail View When Connected to Tab Bar Controller

杰森

【讨论】:

这真的是让我了解发生了什么的链接:***.com/questions/284321/…

以上是关于在标签栏控制器类型应用程序中切换 UIViewController的主要内容,如果未能解决你的问题,请参考以下文章

IOS Segue 在自定义标签栏中不起作用

切换到横向视图并使用标签栏控制器

iOS UI 元素在标签栏控制器中来回切换后被拉伸

如何在“更多”视图中切换到标签栏项目?

在导航到另一个视图控制器之前切换标签栏

切换标签栏时检测选定的标签栏