当前位置: 首页 > 面试题库 >

如何从第一个标签页选择标签栏控制器的第二个标签页?

郭子航
2023-03-14
问题内容

实际执行segue没问题,但是当我这样做时,我的选项卡栏从视图底部消失了。我已经从TabBarController1到TabBarController2创建了一个故事图板。

我找到了很多关于Objective-C的答案,但是没有找到Swift的答案。

这是执行segue的代码:

if requestsArray.count == 0 {
                self.performSegueWithIdentifier("offerSegue", sender: self)
            } else {
                self.performSegueWithIdentifier("confirm1", sender: self)
            }

问题答案:

你不想吵架。序列创建目标视图控制器的新实例并显示它。

这就是您的标签栏消失的原因。您将使用2个选项卡以及新的TabBarController2实例来覆盖选项卡栏控制器。

您要 切换 到其他选项卡。

您要做的是让您拥有的标签栏控制器切换标签。

UIViewController 有一个属性tabBarController,可让您进入自己的标签栏控制器。

TabBarControllers具有selectedIndex使您可以选择选项卡栏控制器的视图控制器之一成为活动视图控制器的属性。

因此,向您的标签栏控制器发送一条消息,要求其切换到另一个标签。

编辑:

除了OP之外,其他人也要求提供示例代码来说明如何执行此操作。我决定创建一个示例项目来说明如何执行此操作。

您可以从Github下载它:https :
//github.com/DuncanMC/TabBarControllers.git

ATabController为由标签栏控制器管理的视图控制器创建了UIViewController的基类。该ATabController.swift文件包含一个枚举,指示要选择的选项卡:

@objc enum Tab: Int {
  case first = 0
  case second
  case third
}

(请注意,如果要将类型的参数传递Tab给IBAction,则该枚举必须是一个Objective-
C枚举,因为IBAction方法需要使用Objective-C类型和函数签名。)

它还包括一个协议TabController

@objc protocol TabController {
  @objc func switchTab(to: Tab)
}

它还定义了一个委托tabDelegate

weak var tabDelegate: TabController?

标签栏控制器具有prepareForSegue(prepare(for:sender:)),用于使其自身成为tabDelegate所有作为标签管理的视图控制器:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  if let child = segue.destination as? ATabController {
    child.tabDelegate = self
  }

然后实现该switchTab(to:)方法:

@objc func switchTab(to: Tab) {
  let index = to.rawValue
  guard let viewControllerCount = viewControllers?.count,
    index >= 0 && index < viewControllerCount  else { return }
  selectedIndex = index
}

在作为标签栏控制器标签的任何子视图控制器中,可以使用如下IBAction代码来切换标签:

@IBAction func handleFirstButton(_ sender: Any) {
  tabDelegate?.switchTab(to: .first)
}


 类似资料:
  • 我正在用JavaFX和Scene Builder制作一个应用程序。 我有两个控制器:控制器和FontController 我有一个主类,它启动我的程序,并用第一个fontroller(控制器)打开舞台 控制器中有一个标签和一个按钮。当我单击按钮时,将调用一个方法,并显示带有第二个控制器的新窗口(FontController): FontCOntroller中有按钮“OK”和标签: 请告诉我,当我单

  • 我在活动中有四个底部选项卡,其中一个选项卡将导航到另一个活动。这个活动有2个片段,四个选项卡中的每一个控制一个片段,当我点击(活动有2个片段)的选项卡时,应用程序停止 如有任何帮助,请提前感谢

  • 我试图用matplotlib在条形图中绘制两组数据,因此我使用了方法的两个轴。但是,第二个y轴标签被切断。我尝试了几种不同的方法,但没有成功(,在中设置s等等)。我觉得解决办法很简单,但我还没有想到。 这里有一个MWE: 侧面plt。savefig(“test.png”)

  • 标签栏是一种特殊情况的工具栏,它包含图标(或者是带有文案的图标),而不是普通的文本,并且和标签页一起使用。 标签栏布局 标签栏和工具栏基本一致,但是它有额外的"tabbar"类: <div class="toolbar tabbar"> <div class="toolbar-inner"> <a href="#tab1" class="tab-link active">

  • 问题内容: 谁能告诉我如何使用webdriver关闭除第一个标签/主标签之外的所有打开的标签? 我在下面尝试过,但是它同时关闭了所有标签,包括第一个标签。 请帮我。 问题答案: 获取所有窗口句柄,然后遍历它们,将webdriver切换到新的句柄,然后调用close方法。显然跳过原始手柄,然后切换回其余手柄。 就像是;

  • Vim 在7以后的版本,开始支持标签页的功能 :tabnew 新建一个标签 :tabnext 转到下一个标签 :tabprevious 转到上一个标签 您也可以使用鼠标点击标签进行切换