2016-06-02 3 views
4

В приложении, которое я создал, я перетащил «Scroll View» в основную раскадровку. Это автоматически создает NSScrollView, внутри которого находится NSClipView, внутри которого находится NSView. Хорошо.Swift OSX динамически добавляет элементы в список прокрутки

То, что я хотел бы достичь, - это динамическое добавление флажков в этот вид прокрутки. Я не знаю, сколько флажков будет заблаговременно (вот почему мне нужен свиток).

добавление подвида к либо NSScrollView или NSClipView фактически отображает некоторые флажки, но свиток не включен. Добавление subView в NSView ничего не делает.

Редактировать: Я также попытался изменить NSScrollView, NSClipView и высоту NSView, не повезло.

Как включить прокрутку, когда к представлению добавлено слишком много флажков?

ответ

3

Таким образом, трюк для этого создает вид контейнера (то есть NSView), чтобы удерживать кнопки. Когда вы создаете NSScrollView в раскадровке, он создает NSClipView и NSView для вас. После того, как вы добавите или удалите кнопку на 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 на это дает более подробную информацию и дополнительные опции, которые вы можете установить.

Надеюсь, это поможет!

+0

Это сделало работу вам большое спасибо DJohnson! – Oggy

Смежные вопросы