【问题标题】:Swift OSX dynamically add items to a scroll listSwift OSX 动态地将项目添加到滚动列表
【发布时间】:2016-06-02 13:58:02
【问题描述】:

在我创建的应用程序中,我将“Scroll View”拖放到主情节提要。这会自动创建一个NSScrollView,其内部是一个NSClipView,其内部是一个NSView。很好。

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

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

编辑:我也尝试修改NSScrollViewNSClipViewNSView 的高度,但没有成功。

当视图中添加的复选框过多时如何启用滚动?

【问题讨论】:

    标签: swift scroll nsscrollview


    【解决方案1】:

    因此,诀窍是创建一个容器视图(即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 提供了更多详细信息和您可能想要设置的更多选项。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 2016-06-02
      • 1970-01-01
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多