如何在iOS应用程序中的所有ViewController中重用相同的UIView

如何在iOS应用程序中的所有ViewController中重用相同的UIView,ios,objective-c,uiview,Ios,Objective C,Uiview,嗨,我是iOS开发新手,我正在开发一个iOS应用程序,我希望在整个应用程序中使用相同的页脚。现在我在每个控制器中创建不同的UIView,但这不是最佳方式。如何创建单个uiview并在应用程序中重用它。我正在使用故事板。在我的页脚中,我有四个按钮将可重用视图创建为XIB,并在需要的地方以编程方式加载它。显示如何处理XIBs 这对您的页脚应该很好 对于更复杂的可重用视图,拥有自己的UIViewConroller,这很有意义: 在情节提要中创建viewController 将其实例化如下: let

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

将可重用视图创建为
XIB
,并在需要的地方以编程方式加载它。显示如何处理
XIB
s

这对您的页脚应该很好

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

  • 在情节提要中创建viewController
  • 将其实例化如下:

    let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
    let controller = storyboard.instantiateViewController(withIdentifier: "someViewController")
    
    func add(childViewController controller: UIViewController, embedViewIn containerView: UIView) {
        controller.willMove(toParentViewController: self)
        addChildViewController(controller)
        containerView.addSubview(controller.view)
        // addCustomConstraints
    }
    
    func remove(childViewController controller: UIViewController) {
        controller.willMove(toParentViewController: nil)
        controller.view.removeFromSuperview()
        controller.removeFromParentViewController()
    }
    
  • 将其添加为子viewController,如下所示:

    let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
    let controller = storyboard.instantiateViewController(withIdentifier: "someViewController")
    
    func add(childViewController controller: UIViewController, embedViewIn containerView: UIView) {
        controller.willMove(toParentViewController: self)
        addChildViewController(controller)
        containerView.addSubview(controller.view)
        // addCustomConstraints
    }
    
    func remove(childViewController controller: UIViewController) {
        controller.willMove(toParentViewController: nil)
        controller.view.removeFromSuperview()
        controller.removeFromParentViewController()
    }
    

以后可以按如下方式删除子viewController:

let storyboard = UIStoryboard(name: "MyStoryboardName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "someViewController")
func add(childViewController controller: UIViewController, embedViewIn containerView: UIView) {
    controller.willMove(toParentViewController: self)
    addChildViewController(controller)
    containerView.addSubview(controller.view)
    // addCustomConstraints
}
func remove(childViewController controller: UIViewController) {
    controller.willMove(toParentViewController: nil)
    controller.view.removeFromSuperview()
    controller.removeFromParentViewController()
}

您必须使用自定义tabBar,看看这个链接,我已经实现了它,它很容易理解。

创建一个uiview类,并在代码中将您的页脚添加到其中,将其子类化并用于所有其他视图。为什么不使用
tabBar
?使用TabBar的简单且更好的方法。如果我们使用TabBar,所有视图的页脚都会有一个按钮。我错过了obj-c标记。很抱歉除了语法之外,它的工作方式也是一样的。如何使用故事板第一种方法不能使用故事板。但XIB就像没有VieeControl的视图的故事板。试试看。