Swift OSX动态地将项添加到滚动列表

时间:2016-06-02 13:58:03

标签: swift scroll nsscrollview

在我创建的应用中,我拖放了一个' Scroll View'到主要的故事板。这会自动创建NSScrollView,其中NSClipViewNSView,其内部为NSScrollView。细

我想要实现的是向该滚动视图动态添加复选框。我不知道会提前有多少个复选框(这就是我需要滚动的原因)。

NSClipViewNSView添加子视图实际上会显示一些复选框,但滚动未启用。将子视图添加到NSScrollView不会呈现任何内容。

修改:我还尝试修改NSClipViewNSView--rcfile的高度,但没有运气。

如果在视图中添加了太多复选框,如何启用滚动?

1 个答案:

答案 0 :(得分:3)

所以诀窍就是创建一个容器视图(即NSView)来按住按钮。在故事板中创建NSScrollView时,会为您创建NSClipViewNSView。在NSView添加或删除按钮后(您可以创建自己的按钮,或使用提供的按钮),将滚动条的documentView设置为包含按钮的视图。这会在滚动条中正确重置所有内容,您应该滚动!如果您更改代表滚动内容的视图的大小,您只需将该视图重新分配给scroller.documentView,它就会相应地更新所有内容。

这是一个向滚动条添加20个按钮的可怕示例:

let documentView = NSView(frame: CGRectMake(0,0,200,1200))

for index in 0..<20 {
  let offset = CGFloat(index * 50)
  let button = NSButton(frame: CGRectMake(0, offset, 150, 50 ))
  documentView.addSubview(button)
}

scrollView.documentView = documentView

Apple documentation上的http://localhost:4502/content/geometrixx/en/mycomponentinstance.json提供了您可能想要设置的更多详细信息和更多选项。

希望这有帮助!