通过一个容器视图传递多个视图控制器 - Xcode 8、Swift 3

     2023-03-14     131

关键词:

【中文标题】通过一个容器视图传递多个视图控制器 - Xcode 8、Swift 3【英文标题】:Pass Multiple ViewControllers through One Container View - Xcode 8, Swift 3 【发布时间】:2017-03-12 00:19:12 【问题描述】:

我只是想在按下按钮时通过容器视图传递一个视图控制器。我的导航也在一个容器视图中并且水平滚动(像一个停靠点) 这里有两张图片来说明我正在尝试做的事情。

ContainerView 可以做到这一点吗?

【问题讨论】:

【参考方案1】:

想通了!! 我删除了蓝色的容器视图并将其换成滚动视图 这是其他对此感兴趣的人的代码。仍在努力使 toe Container View 的高度与内容动态变化。

本教程帮助很大:Tutorial

主视图控制器:

var container: ContainerViewController!

override func viewDidLoad() 
    container!.segueIdentifierReceivedFromParent("first")



@IBAction func firstBtnPressed(_ sender: Any) 
    let vc = "first"
     container!.segueIdentifierReceivedFromParent(vc)



@IBAction func secondBtnPressed(_ sender: Any) 
    container!.segueIdentifierReceivedFromParent("second")


@IBAction func thirdBtnPressed(_ sender: Any) 
    container!.segueIdentifierReceivedFromParent("third")


override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    if segue.identifier == "container"

        container = segue.destination as! ContainerViewController

    

容器视图(紫色视图)

open class ContainerViewController: UIViewController 
    //Manipulating container views
    fileprivate weak var viewController : UIViewController!
    //Keeping track of containerViews
    fileprivate var containerViewObjects = Dictionary<String,UIViewController>()

    /** Specifies which ever container view is on the front */
    open var currentViewController : UIViewController
        get 
            return self.viewController  
        
    

    fileprivate var segueIdentifier : String!

    /*Identifier For First Container SubView*/
    @IBInspectable internal var firstLinkedSubView : String!

    override open func viewDidLoad() 
        super.viewDidLoad()
    

    open override func viewDidAppear(_ animated: Bool) 
        if let identifier = firstLinkedSubView
            segueIdentifierReceivedFromParent(identifier)
        
    

    override open func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    

    func segueIdentifierReceivedFromParent(_ identifier: String)         
        self.segueIdentifier = identifier
        self.performSegue(withIdentifier: self.segueIdentifier, sender: nil)    
    

    override open func prepare(for segue: UIStoryboardSegue, sender: Any?) 
        if segue.identifier == segueIdentifier             
            //Remove Container View
            if viewController != nil 
                viewController.view.removeFromSuperview()
                viewController = nil
            
            //Add to dictionary if isn't already there
            if ((self.containerViewObjects[self.segueIdentifier] == nil)) 
                viewController = segue.destination
                self.containerViewObjects[self.segueIdentifier] = viewController                
             else 
                for (key, value) in self.containerViewObjects 
                    if key == self.segueIdentifier                         
                        viewController = value
                    
                
            

            self.addChildViewController(viewController)
            viewController.view.frame = CGRect(x: 0,y: 0, width: self.view.frame.width,height: self.view.frame.height)
            self.view.addSubview(viewController.view)
            viewController.didMove(toParentViewController: self)
        
    

【讨论】:

RxSwift:如何通过多个视图模型传递控制事件

...钮的集合视图单元格,我想通过单元格的视图模型、视图控制器的视图模型和集合视图控制器本身(根据我的需要)传递点击控制事件(button.rx.rap)在点击事件上呈现视图控制器)。如何以Rx 查看详情

在具有委托的视图控制器之间传递多个值

】在具有委托的视图控制器之间传递多个值【英文标题】:Passseveralvaluesbetweenviewcontrollerswithdelegates【发布时间】:2017-10-1108:48:45【问题描述】:我已经成功地通过委托函数在视图控制器之间传递了一段数据(一个String变量、一... 查看详情

Xcode - 从多个视图控制器访问一个视图控制器

】Xcode-从多个视图控制器访问一个视图控制器【英文标题】:Xcode-Accessoneviewcontrollerfrommultipleviewcontrollers【发布时间】:2012-08-0107:50:40【问题描述】:我创建了一个总共有4个视图控制器的应用程序。其中2个是包含内容的页面,... 查看详情

在多个视图控制器之间传递数据[重复]

】在多个视图控制器之间传递数据[重复]【英文标题】:Passingdatabetweenseveralviewcontrollers[duplicate]【发布时间】:2015-02-1615:25:07【问题描述】:我创建了7个视图控制器,每个控制器都有多个文本字段。我需要从所有视图控制器中收... 查看详情

多个容器视图 VS 链接到单个容器视图的多个视图控制器

】多个容器视图VS链接到单个容器视图的多个视图控制器【英文标题】:MultiplecontainerviewsVSmultipleviewcontrollerslinkedtoasinglecontainerView【发布时间】:2019-01-0907:52:53【问题描述】:我有以下配置的视图。通过单击按钮,相应的容器视... 查看详情

视图控制器未在 XCode 8 StoryBoard 中与容器视图一起显示

】视图控制器未在XCode8StoryBoard中与容器视图一起显示【英文标题】:ViewControllerisnotshowingwithContainerViewinXCode8StoryBoard【发布时间】:2016-10-2516:22:31【问题描述】:我正在构建一个使用故事板并使用容器视图设计视图控制器的应用... 查看详情

从子视图控制器获取容器视图的故事板标识符

】从子视图控制器获取容器视图的故事板标识符【英文标题】:GetStoryboardidentifierofContainerViewfromchildViewController【发布时间】:2021-06-0317:37:16【问题描述】:我在MacOS(Xcode/AppKit)上有多个容器视图,它们都将segue嵌入到同一个PistonVi... 查看详情

如何在容器视图和主视图控制器之间正确传递数据

】如何在容器视图和主视图控制器之间正确传递数据【英文标题】:Howtopassdatabetweencontainerviewandmainviewcontrollerproperly【发布时间】:2017-03-2606:17:32【问题描述】:我正在处理以下问题:在主VC上我有一个TableView,在容器视图控制... 查看详情

具有多个子视图问题的容器视图

...2015-01-0912:23:03【问题描述】:我正在尝试开发一个表视图控制器(具有导航控制器),其中行连接到多个视图控制器(TextField、TextView、TableView、DatePicker、ImageView等)。所以我这样设计,如果我点击任何一行,它应该打开一个UIV... 查看详情

如何将从列表中选择的多个项目传递到下一个视图?

】如何将从列表中选择的多个项目传递到下一个视图?【英文标题】:HowdoIpassmultipleitemsselectedfromlisttonextview?【发布时间】:2021-09-1617:11:07【问题描述】:在我看来,我问了用户2个问题。在每个问题下方,我都有一个列表,允许... 查看详情

xcode/ios:以编程方式启动模态视图控制器时如何传递数据

】xcode/ios:以编程方式启动模态视图控制器时如何传递数据【英文标题】:xcode/ios:Howtopassdatawhenprogrammaticallylaunchingmodalviewcontroller【发布时间】:2015-04-0614:48:07【问题描述】:您好,我正在使用以下代码以编程方式启动一个存在... 查看详情

Xcode - 我如何以编程方式在容器视图中嵌入/更改视图控制器?

】Xcode-我如何以编程方式在容器视图中嵌入/更改视图控制器?【英文标题】:Xcode-Howcaniprogrammaticallyembed/changeviewcontrollerwithinacontainerview?【发布时间】:2017-07-1512:06:55【问题描述】:我正在尝试以编程方式设置/或更改ControllerView... 查看详情

无法将数据从集合视图传递到 Xcode 中的详细视图

...信息。我正在努力将集合视图单元格的值分配给详细视图控制器上的插座。我哪里错了 查看详情

通过视图传递数据 Xcode 4.2 故事板

】通过视图传递数据Xcode4.2故事板【英文标题】:PassdatathroughviewsXcode4.2storyboarding【发布时间】:2011-12-2907:42:31【问题描述】:我的项目基本上是一个性能车应用程序,使用arc4rand()来确定接下来会出现哪辆车。我做了一个picture来... 查看详情

如何将参数从容器视图的父 ViewController 传递到该容器视图的 PageViewController?

...发布时间】:2018-06-1321:25:57【问题描述】:我有三个视图控制器。初始视图控制器内部有一个容器视图,我想将 查看详情

在Xcode中的视图控制器之间传递数据[重复]

】在Xcode中的视图控制器之间传递数据[重复]【英文标题】:passingdatabetweenviewcontrollerinXcode[duplicate]【发布时间】:2014-02-1922:50:32【问题描述】:我正在构建这个应用程序,我的主要VC将首先显示一个带有自定义单元格的UITable[每... 查看详情

如何从容器/父视图控制器和多个子视图控制器共享数据数组

】如何从容器/父视图控制器和多个子视图控制器共享数据数组【英文标题】:Howtosharearrayofdatafromcontainer/parentviewcontrollerandmultiplechildrenviewcontrollers【发布时间】:2013-02-2116:49:47【问题描述】:我有一个场景,其中有一个父容器视... 查看详情

如何在不同故事板上的视图控制器之间传递数据?

】如何在不同故事板上的视图控制器之间传递数据?【英文标题】:HowToPassDataBetweenViewControllersOnDifferentStoryboards?【发布时间】:2013-10-3012:55:59【问题描述】:我在一个XCode项目中使用多个故事板。每个故事板上都有多个视图控制... 查看详情