2011-09-15 5 views
2

Я пытаюсь добавить один под просмотр (вид из NSViewController) для каждого элемента в словаре на NSScrollView, чтобы получить вид таблицы, но с гораздо большей гибкостью по ячейкам.Добавить много просмотров в NSScrollView

Возможно ли разместить (программно), например. 100 subviews под друг друга, так что вам нужно прокрутить вниз по NSScrollView, чтобы добраться до последнего элемента ???

Благодаря передовой, Grolior

ответ

3

Короткий ответ да. Я сделал это раньше, и заверяю вас, что это сработает. Позвольте мне также заверить вас, что это не так просто, как кажется. ;)

Путь к этому заключается в том, чтобы поддерживать один вид содержимого, в котором вы добавляете все свои пользовательские строки в качестве подпрограмм программно. Обратите внимание, что вам придется либо изменить размер содержимогоView до, добавив все строки, либо вам придется отключить авторезисторию для просмотра строк. Установите documentView вашего scrollView в этот пользовательский contentView, и вам должно быть хорошо идти.

+0

«... либо ... изменить размер содержимогоView до ... или ... отключить авторезистор ...» Можете ли вы уточнить? Почему вы должны это делать? –

+0

@Chris Page: если вы добавите кучу подзонов в родительское представление, а затем измените размер этого родительского представления, subviews будут автоматически изменяться в соответствии с флагами, установленными в их масках авторазрешения. Например, рассмотрите представления строк, которые настроены на автоматизацию, и изначально имеют высоту 100 пикселей. Когда вы добавите 10 из них в contentView, высота которого составляет всего 500 пикселей, а затем измените размер contentView на высоту 1000 пикселей, каждая строка изменит размер на 200 пикселей. –

1

Да, просто инициализировать точку программно с помощью (то есть)

NSView *subView = [[NSView alloc] initWithFrame:CGRectMake(10,10,100,100)]; 

затем добавить к основной с помощью addSubview: метода главного вида.
Не забудьте вручную отпустить подвью, когда вы это сделали (это означает, что когда вы добавили его в основное представление).

В качестве примера вы можете сделать что-то вроде

int height x = 10, y = 10, width = 100, height = 100; 

for(int i = 0;i<100;i++) { 
    NSView *subView = [[NSView alloc] initWithFrame:CGRectMake(x,y + height*i,width,height)]; 
    [scrollView addSubview:subView]; 
    [subView release]; 
}