将 NSViewController 的视图显示为 NSView 的(NSScrollView)子视图
Display NSViewController's view as NSView's (NSScrollView) subview
我有不同的 NSViewController
具有多个字段。一个有 NSDatePicker,
另一个有 NSTextField 等等。
例子:
我的想法是在我单击特定按钮时在 NSScrollView 中显示这些内容。
所以我想到了下一个解决方案:
我的主要 ViewController
class 有一个变量 viewControlers: [ViewController
] 包含所有自定义 ViewController
s (具有不同的输入)。当我点击按钮时,我初始化某些 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
触发“close()”功能到每个自定义 ViewController
s 与输入。然后在“关闭”功能中的那些 ViewController
s 我做:
self.view.removeFromSuperview()
然而,它只是从 scrollView 中删除了 ViewController
的视图,但是 ViewController
本身并没有被释放,而是保留在 viewControlers 数组中(mainViewController 内的变量)
我正在考虑创建委托,并在每次按下其中一个视图上的关闭按钮时调用委托方法。在这种情况下,我只需要有一个委托数组(对于每个自定义 ViewController
)[与包含对所有已创建的 ViewController
的引用的数组平行]。
现在我想,当您想在另一个视图中呈现 ViewController
的视图,或者每个人都以他们更喜欢的方式呈现时,是否有一种通用的处理方式?
解决方案 A:委托。所有视图控制器都可以有相同的委托,即主视图控制器。关闭视图控制器是委托方法的参数。
方案B:自定义通知。主视图控制器观察通知。关闭视图控制器发布通知,并且是通知的对象。
我有不同的 NSViewController
具有多个字段。一个有 NSDatePicker,
另一个有 NSTextField 等等。
例子:
我的想法是在我单击特定按钮时在 NSScrollView 中显示这些内容。
所以我想到了下一个解决方案:
我的主要 ViewController
class 有一个变量 viewControlers: [ViewController
] 包含所有自定义 ViewController
s (具有不同的输入)。当我点击按钮时,我初始化某些 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
触发“close()”功能到每个自定义 ViewController
s 与输入。然后在“关闭”功能中的那些 ViewController
s 我做:
self.view.removeFromSuperview()
然而,它只是从 scrollView 中删除了 ViewController
的视图,但是 ViewController
本身并没有被释放,而是保留在 viewControlers 数组中(mainViewController 内的变量)
我正在考虑创建委托,并在每次按下其中一个视图上的关闭按钮时调用委托方法。在这种情况下,我只需要有一个委托数组(对于每个自定义 ViewController
)[与包含对所有已创建的 ViewController
的引用的数组平行]。
现在我想,当您想在另一个视图中呈现
ViewController
的视图,或者每个人都以他们更喜欢的方式呈现时,是否有一种通用的处理方式?
解决方案 A:委托。所有视图控制器都可以有相同的委托,即主视图控制器。关闭视图控制器是委托方法的参数。
方案B:自定义通知。主视图控制器观察通知。关闭视图控制器发布通知,并且是通知的对象。