Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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
Swift 如何为同一选项卡栏项目显示不同的视图页面?_Swift_Uitabbarcontroller - Fatal编程技术网

Swift 如何为同一选项卡栏项目显示不同的视图页面?

Swift 如何为同一选项卡栏项目显示不同的视图页面?,swift,uitabbarcontroller,Swift,Uitabbarcontroller,我已经在故事板中创建了一个UITabBarController。 手动将三个不同的UIViewControllers分隔到每个选项卡栏项。 我想要的是直接到一个选项卡栏项目的不同视图控制器 例如,我在索引2中有一个myProfile选项卡栏项,我想为未注册用户显示登录页面,为普通用户显示配置文件页面,为管理员用户显示带有附加功能的配置文件页面 我想根据条件将第三个选项卡栏项设置为直接登录视图(右二)或配置文件视图(最右侧)。我该怎么做 您可以创建一个新类并扩展UITabBarController

我已经在故事板中创建了一个
UITabBarController
。 手动将三个不同的
UIViewController
s分隔到每个选项卡栏项。 我想要的是直接到一个选项卡栏项目的不同视图控制器

例如,我在索引2中有一个myProfile选项卡栏项,我想为未注册用户显示登录页面,为普通用户显示配置文件页面,为管理员用户显示带有附加功能的配置文件页面

我想根据条件将第三个选项卡栏项设置为直接登录视图(右二)或配置文件视图(最右侧)。我该怎么做


您可以创建一个新类并扩展UITabBarController,并使用要设置在用户是否已登录位置的viewController更改viewController的数组。比如说

}

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

  • 选择选项卡栏视图控制器
  • 转到身份检查器(右侧)
  • 设置我们的自定义TabBarViewController,您可以在下一个图像链接上看到它:

  • 您可以创建一个新类并扩展UITabBarController,并使用要设置在用户是否已登录位置的viewController更改viewController的数组。比如说

    }

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

  • 选择选项卡栏视图控制器
  • 转到身份检查器(右侧)
  • 设置我们的自定义TabBarViewController,您可以在下一个图像链接上看到它:

  • 我不确定是否使用故事板,但您可以调整UITabBarController的方法。也就是说,您可以使用决策逻辑为选项卡栏提供函数。拥有一个UIViewController可能更容易,它是整个登录/配置文件逻辑,如果登录,它将加载配置文件视图;如果未登录,它将加载登录视图。我不确定是否使用故事板,但您可以调整UIAbbarController的方法。也就是说,您可以使用决策逻辑为选项卡栏提供函数。拥有一个UIViewController可能更容易,它是整个登录/配置文件逻辑的一部分,如果登录,它将加载配置文件视图,如果未登录,它将加载登录视图 import UIKit

    class TabBarViewController: UITabBarController {

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