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

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

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

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

这就是您的标签栏消失的原因。您将使用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)}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5087378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存