swift - 如何为同一个标签栏项目显示不同的 View 页面?

标签 swift uitabbarcontroller

我在 Storyboard中创建了一个 UITabBarController。 三个不同的 UIViewController 被手动 segued 到每个标签栏项目。 我想要的是针对一个标签栏项目直接到不同的 View Controller 。

例如,我在索引 2 处有一个 myProfile 选项卡栏项目,我想显示未注册用户的登录页面、普通用户的个人资料页面以及管理员用户的具有附加功能的个人资料页面。

我想根据条件将第三个选项卡栏项设置为指向 login_view(第二个右边)或 profile_view(最右边)。我应该怎么做?

my storyboard

最佳答案

您可以创建一个新类并扩展它的 UITabBarController,并使用您想要在用户登录或未登录的位置设置的 ViewController 更改 viewController 的数组。例如

import UIKit

class TabBarViewController: UITabBarController {

var isLogged = false override func viewDidLoad() { super.viewDidLoad() configureTabBar() } func configureTabBar() { if(isLogged) { self.viewControllers?[1] = ProfileViewController() } }

将 ProfileViewController 设置在您拥有登录页面时的位置(本例中为 1)。之后,我们需要在 Storyboard上设置我们的自定义 UITabBarController :

  1. 选择标签栏 View Controller
  2. 转到身份检查器(在右侧)
  3. 设置我们的自定义 TabBarViewController,您可以在下一个图片链接中看到它:

/image/jOuP3.png

关于swift - 如何为同一个标签栏项目显示不同的 View 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57960101/

相关文章:

ios - 如何将 RGB 值转换为 HEX 字符串 iOS swift

ios - 使一个单元格(但不是第一个单元格)在 UITableView 上始终可见

ios - 为什么我无法在 swift5 上 pod 安装 5.0 Bigint?

ios - 自动添加千位分隔符(Swift)

ios - 带标题的 UITabBarController header

ios - 使用选定的 TableView 项和选项卡栏 Controller 显示 View Controller

javascript - 如何将 JavaScript HMAC 代码转换为 CryptoSwift 实现?

ios - UITableView:向上滑动时收缩标签栏和导航栏

ios - 在 UITabBarController 中推送不支持的 navController

ios - 同步 TabBar/NavigationBar 上的背景颜色