Ios 在选项卡栏控制器中设置视图控制器
我的应用程序有一个选项卡栏控制器,它在viewDidLoad方法中加载3个视图控制器Ios 在选项卡栏控制器中设置视图控制器,ios,objective-c,uitabbarcontroller,uinavigationbar,uitabbaritem,Ios,Objective C,Uitabbarcontroller,Uinavigationbar,Uitabbaritem,我的应用程序有一个选项卡栏控制器,它在viewDidLoad方法中加载3个视图控制器 - (void)viewDidLoad { [super viewDidLoad]; ... [self setViewControllers:@[firstViewController, secondViewController, thirdViewControl
- (void)viewDidLoad
{
[super viewDidLoad];
...
[self setViewControllers:@[firstViewController,
secondViewController,
thirdViewController,
]];
}
我希望它显示一个与这三个控制器不同的视图控制器(homeViewController)。首次加载选项卡栏时,将不会选择这三个选项卡栏中的任何一个。我想通过按tab栏项目来更改它们,并通过按导航左栏按钮返回主视图
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:btnImage
style:UIBarButtonItemStylePlain
target:self
action:@selector(setHomeView)];
当首次加载选项卡栏控制器时,如何显示homeViewController而不将其添加到选项卡栏项目?默认情况下,选项卡栏控制器将index0处的第一个ViewController设置为主控制器 如果不希望应用程序的第一个ViewController位于tabBarController内,则必须创建HomeVC并将其设置为应用程序的入口点,但该视图中不会出现tab栏
除非视图控制器位于这三个导航堆栈中的某个位置,否则无法在TabBarController中显示视图控制器 但我想在加载应用程序时显示选项卡栏。
UITabBarController
不打算以这种方式使用。在大多数情况下,每个uitabarcontroller
基本上都有自己的UINavigationController
,因此也有自己的堆栈。这些选项卡都是彼此分开的。如果我转到firstViewController
,然后被推到另一个VC,然后单击第二个选项卡,我就不再有导航左栏按钮返回主VC。你不应该是在一个家里的VC,然后去标签1,然后标签3,仍然有一个返回按钮回到家里的VC。重新考虑您的UI/UX流。所有这三个视图控制器都继承自同一基类,因此它们具有相同的导航左栏按钮,但它们不会具有相同的导航堆栈。UITabBarController用于将rootViewController与firstVC、secondVC、thirdVC交换。每一个都有不同的导航堆栈,唯一的方法是执行self.navigationController.push。这样做的问题是我可以做->HomeVC->第一->第三->第一->第三->第三->第一->第三->第一->第三->第一->第三。现在我必须按下后退按钮9次才能回到主屏幕。这也会占用大量内存,而且不会恢复以前的任何堆栈。我明白了。有没有其他方法可以实现这种导航?老实说,大多数人只是将HomeVC添加到UITabBarController
中来解决这个问题,这样他们就可以执行self.window.rootViewController={HomeVC,firstVC,secondVC,thirdVC}。否则,如果它只是一个着陆屏幕,他们不关心一旦通过它就能够回到它。