【发布时间】:2017-06-18 18:27:00
【问题描述】:
我有不同的NSViewControllers,它们有多个字段。一个有 NSDatePicker,
另一个有 NSTextField 等等。
这个想法是当我点击特定按钮时在 NSScrollView 中显示这些。
于是我想出了下一个解决方案:
我的主要ViewController 类有一个变量viewControlers: [ViewController],它包含所有自定义ViewControllers(具有不同的输入)。当我单击按钮时,我初始化某些ViewController,然后将它的视图添加到滚动视图中。
例子:
let dmyVC = storyBoard.instantiateController(withIdentifier: "DayMonthYearVC") as! DayMonthYearSelectVC
self.viewControlers.append(dmyVC) //add new vc to the array
scrollView.addSubview(dmyVC.view) //add this VC’s view to a scroll view
我将NSButton 添加到每个带有输入的自定义ViewControllers 中触发“close()”函数。然后在我做的“关闭”功能中的那些ViewControllers:
self.view.removeFromSuperview()
但是它只从滚动视图中删除了ViewController 的视图,但ViewController 本身并没有被释放,它保留在 viewControlers 数组中(mainViewController 中的变量)
我正在考虑创建委托,并在每次按下其中一个视图上的关闭按钮时调用委托方法。在这种情况下,我只需要一个委托数组(对于每个自定义 ViewController)[与包含对所有已创建 ViewControllers 的引用的数组平行]。
现在我想,当你想在另一个视图中呈现
ViewControllers 的视图时,是否有一种通用的处理方式,或者每个人都以他们更喜欢的方式来处理?
【问题讨论】:
-
与问题无关,但
scrollView.addSubview(dmyVC.view)不是您将视图添加到滚动视图的方式。 -
scrollView 只是一个 NSView,后来变成了 ScrollView 的 documentView ( mainScrollView.documentView = scrollView)
标签: swift cocoa swift3 nsview nsviewcontroller