【问题标题】:Initialize viewControllers from a UITabBarController从 UITabBarController 初始化 viewControllers
【发布时间】:2017-07-03 12:23:33
【问题描述】:

我有一个 UITabBarController。使用界面生成器,我添加了多个视图控制器。这些 viewController 都是同一个类,但唯一改变的是参数。

我想扩展 UITabBarController,以便在初始化视图控制器时添加此参数,但我不知道如何在 UITabBarController 扩展中执行此操作。这样做的正确地点在哪里???

【问题讨论】:

  • 目前您的控制器由“Interface Builder”初始化。如果您想自己初始化控制器并添加一些参数,最好从代码中添加控制器而不是从界面构建器中添加。
  • 这是有道理的,但必须有一种添加参数的方法......我想在视图中抓取视图控制器确实加载了标签栏控制器并在那里添加参数......但我觉得那很脏!
  • 看看UITabbarController的delegate,有一个函数didSelectViewController你可以用那个函数来根据索引设置参数。但是每次选择要显示的标签索引时都会设置它。

标签: ios swift uikit uitabbarcontroller


【解决方案1】:

我也遇到过这样的问题,我想在标签栏控制器的第五个标签中显示弹出视图控制器, 我用这个:

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {

    if(viewController == tabBarController.viewControllers?[4]){
        let storyboard : UIStoryboard = UIStoryboard(name: "AfterLogin", bundle: nil)
        let vc = storyboard.instantiateViewController(withIdentifier: "MorePopUpVC")
        vc.modalPresentationStyle = .popover
        let popover = vc.popoverPresentationController
        popover?.delegate = self
        popover?.permittedArrowDirections = .down
        popover?.sourceView = self.tabBar
        popover?.sourceRect = ((self.orderedTabBarItemViews()).last?.frame)!
        vc.preferredContentSize = CGSize(width: 120, height: 132)
        present(vc, animated: true, completion:nil)
        return false
    }
    return true
}

这就是我如何更改第五个选项卡的操作,

你可以像这样使用它:

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {

        let storyboard : UIStoryboard = UIStoryboard(name: "YOUR STORYBOARD NAME", bundle: nil)
        let vc = storyboard.instantiateViewController(withIdentifier: "YOUR VIEW CONTROLLER IDENTIFIER")
        if(viewController == tabBarController.viewControllers?[4]){
            vc.type = "PARAMETER YOU WANT"
        }
        present(vc, animated: true, completion:nil)
        return false
}

我觉得有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多