【问题标题】:How to reuse same UIView in all viewcontrollers in iOS App如何在 iOS App 的所有视图控制器中重用相同的 UIView
【发布时间】:2017-06-07 22:31:01
【问题描述】:

您好,我是 iOS 开发的新手,我正在开发一个 iOS 应用程序,我想在整个应用程序中使用相同的页脚。现在我在每个控制器中创建不同的 uiview,但这不是最佳方式。如何创建单个 uiview 并在应用程序中重用它。我正在使用故事板。在我的页脚中,我有四个按钮

【问题讨论】:

  • 创建一个 uiview 类并在代码中添加页脚,将其子类化并用于所有其他视图。
  • 你为什么不用TabBar?使用 TabBar 的简单而更好的方法。
  • 如果我们使用tabbar,所有视图的页脚都会有一个按钮

标签: ios objective-c uiview


【解决方案1】:

你必须使用自定义tabBar,看看https://github.com/hartlco/MHCustomTabBarController这个链接,我已经实现了它很容易理解。

【讨论】:

    【解决方案2】:

    将您的可重用视图创建为XIB,并以编程方式将其加载到您需要的任何地方。 This answer 显示如何处理 XIBs。

    这应该适用于您的页脚。

    对于更复杂的可重用视图,拥有自己的UIViewConroller 是有意义的:

    • 在情节提要中创建 viewController
    • 像这样实例化它:

      let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
      let controller = storyboard.instantiateViewController(withIdentifier: "someViewController")
      
    • 像这样将它添加为子viewController:

      func add(childViewController controller: UIViewController, embedViewIn containerView: UIView) {
          controller.willMove(toParentViewController: self)
          addChildViewController(controller)
          containerView.addSubview(controller.view)
          // addCustomConstraints
      }
      

    您以后可以像这样删除子 viewController:

    func remove(childViewController controller: UIViewController) {
        controller.willMove(toParentViewController: nil)
        controller.view.removeFromSuperview()
        controller.removeFromParentViewController()
    }
    

    【讨论】:

    • 我错过了 obj-c 标签。对不起。除了语法之外,它的工作方式相同。
    • 我怎样才能用故事板做到这一点
    • 第一种方法不能使用情节提要。但是 XIB 就像没有 vieeController 的视图的故事板。试试看。
    猜你喜欢
    • 2017-11-29
    • 2012-06-01
    • 1970-01-01
    • 2016-03-25
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多