栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/426990.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号