关键词:
【中文标题】通过一个容器视图传递多个视图控制器 - 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项目中使用多个故事板。每个故事板上都有多个视图控制... 查看详情