Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.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 如果选项卡栏控制器位于另一个ui控制器内,如何以编程方式切换选项卡-敏捷的_Ios_Swift_Uitabbarcontroller - Fatal编程技术网

Ios 如果选项卡栏控制器位于另一个ui控制器内,如何以编程方式切换选项卡-敏捷的

Ios 如果选项卡栏控制器位于另一个ui控制器内,如何以编程方式切换选项卡-敏捷的,ios,swift,uitabbarcontroller,Ios,Swift,Uitabbarcontroller,您好,我是ios开发新手,尤其是在swift。基本上我只需要切换选项卡,我已经尝试了tabBarController?。选择了dex=1,但似乎没有切换选项卡 上图是我的故事板,初始设置是我有splitview控制器主控台上的初始视图是tableViewController,它是A和当点击单元格的附件时,A的细节显示在splitview的细节上,当点击行本身时,显示在splitview的细节上 选项卡栏控制器更换主控制器 然后我在我的选项卡中有四个选项卡,分别是控制器选项卡B,选项卡C,选项卡

您好,我是ios开发新手,尤其是在swift。基本上我只需要切换选项卡,我已经尝试了
tabBarController?。选择了dex=1
,但似乎没有切换选项卡

上图是我的故事板,初始设置是我有splitview控制器主控台上的初始视图是
tableViewController
,它是
A
当点击单元格的附件时,
A
的细节显示在splitview的细节上,当点击行本身时,显示在splitview的细节上
选项卡栏控制器
更换主控制器

然后我在我的选项卡中有四个选项卡,分别是控制器
选项卡B
选项卡C
选项卡D
,和
选项卡E
,当点击它时,它只是一个列表,显示其各自的视图控制器作为拆分视图的详细信息,然后在
选项卡E
中,我有3个按钮,每个按钮设计用于切换选项卡

注意:选项卡和详细信息嵌入到导航控制器中

我有点搞不清楚这方面的标准是什么。 有人能帮我提些意见和建议吗。

原因是什么

tabBarController?.selectedIndex = 1 tabBarController?.selectedIndex=1 不工作,是因为tabBarController为零

为了获得正确的tabBarController,您必须从window对象的根获取它。 像这样的,, var tabBarController: UITabBarController = self.window?.rootViewController as? UITabBarController tabBarController.selectedIndex = 1 var tabBarController:UITabBarController=self.window?.rootViewController-as?超宽带控制器 tabBarController.selectedIndex=1

因为,您可能必须在导航堆栈中找到正确的tabBarController,所以还必须遍历堆栈。 从上面的故事板中,我相信您正在从Tableview didSelect加载tabbarController,因此您必须在那里获取tabbarController并在那里选择tabbar索引


希望有帮助。

添加您的AppDelegate.swift:
var tabBarController:UITabBarController?

然后您可以放入另一个控制器
self.tabBarController!。selectedIndex=0


在tab bar控制器的身份检查器中为我工作时,我在情节提要ID“tabBarController”中添加了一个名称。在我的操作中,我添加了实例化视图控制器和cast UITabbarController。您可以切换到所选的选项卡栏。希望这有帮助

@IBAction func buttonTapped(_ sender: Any) {
    let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
    let vc: UITabBarController = mainStoryboard.instantiateViewController(withIdentifier: "tabBarController") as! UITabBarController
    vc.selectedIndex = 0  
    self.present(vc, animated: true, completion: nil)
}

我的rootviewcontroller是tableview A,因此我需要先转到切换选项卡?是的,正确,当您将tabbarcontroller添加到rootviewcontroller时,您需要切换选项卡。这个tabbar控制器是从tableview启动的,目标有点丢失,我需要先转到根控制器(tableview a),然后启动它的一个单元格,以便tabbar显示,然后切换tab?很抱歉,我不知道该怎么办。我相信您正在根据用户对tableview行的选择启动带有选定索引的tabbar,对吗?还有一件事,tabbarcontroller应该在显示时添加到window rootviewcontroller,而不是作为子视图