【问题标题】:How do I add a UIView to a UIViewController from the menu tab bar controller with swift?如何使用 swift 从菜单选项卡栏控制器将 UIView 添加到 UIViewController?
【发布时间】:2016-09-18 10:34:50
【问题描述】:

所以,我有一个应用程序,它的根视图控制器有一个菜单栏控制器类,我将其命名为 MenuTabBarController,它包含多个 UIViewControllers。其中一个视图控制器是我称之为HomeViewController 的主页,它在应用程序加载时显示,因为它占据索引0 位置。我要做的是在MenuTabBarControllerviewDidLoad 方法中创建一个子视图,但将此子视图放在HomeViewController 中。这是我想出的

    let homeViewController = HomeViewController()//An instance of HomeViewController created at global level

    class MenuTabBarController: UITabBarController,UITabBarControllerDelegate,UIPopoverPresentationControllerDelegate{

        var mainBox: UIView!//This is the sub view reference declared as an optional

        override func viewDidLoad()

            super.viewDidLoad()

            self.delegate = self


            mainBox = UIView(frame: CGRectMake(0,0,200,200))//Initialize mainBox

            homeViewController.view.addSubview(mainBox)//Attempt to add mainBox to homeViewController

        }//End viewDidLoad

    }//End class definition

没有添加 mainBox,因为当我尝试运行应用程序时,一个空白页面盯着我看。如果我像这样将 mainBox 添加到菜单栏的视图中

    self.view.addSubview(mainBox)

它被添加。但是如何将其添加到 homeView 中?

【问题讨论】:

    标签: ios swift uiview uiviewcontroller uitabbarcontroller


    【解决方案1】:

    您似乎正在创建一个额外的主视图控制器实例(顺便说一句,它永远不会可见)并将子视图添加到其中。

    我认为您真正想要做的是在 HomeViewController 类的 viewDidLoad 中创建和添加子视图。

    【讨论】:

      【解决方案2】:

      您不能将子视图添加到标签栏控制器,因为它管理所有标签,它对用户来说是 VC 不可见的。因此,如果您想在任何 tac(VC) 中添加视图,则可以将其添加到 viewdidload 方法中,或者如果您想从 tabbarcntoller 类添加视图,则可以通过调用 viewControllers 获取数组中的所有视图控制器通过selfself.viewControllers[0] 是你的第一个 VC(在你的情况下是 Home),self.viewControllers[1] 应该是第二个。

      希望这会有所帮助:)

      【讨论】:

        【解决方案3】:

        您也可以通过获取标签栏控制器的所有控制器来访问标签的索引。

        (self.viewControllers[0] as! HomeViewController).view.addSubview(mainBox) 
        

        希望对你有用!!!

        【讨论】:

        • JAGAT 谢谢你的工作。我不得不将代码从 viewDidLoad() 移到 viewDidAppear() 中
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-08
        • 1970-01-01
        • 2021-10-23
        • 2023-03-21
        • 2017-05-18
        • 1970-01-01
        • 2021-10-06
        相关资源
        最近更新 更多