Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在选项卡栏控制器中设置视图控制器_Ios_Objective C_Uitabbarcontroller_Uinavigationbar_Uitabbaritem - Fatal编程技术网

Ios 在选项卡栏控制器中设置视图控制器

Ios 在选项卡栏控制器中设置视图控制器,ios,objective-c,uitabbarcontroller,uinavigationbar,uitabbaritem,Ios,Objective C,Uitabbarcontroller,Uinavigationbar,Uitabbaritem,我的应用程序有一个选项卡栏控制器,它在viewDidLoad方法中加载3个视图控制器 - (void)viewDidLoad { [super viewDidLoad]; ... [self setViewControllers:@[firstViewController, secondViewController, thirdViewControl

我的应用程序有一个选项卡栏控制器,它在viewDidLoad方法中加载3个视图控制器

- (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}。否则,如果它只是一个着陆屏幕,他们不关心一旦通过它就能够回到它。