2011-04-05 3 views
0

У меня возникли трудности с настройкой моей настройки PXListView и NSScrollView. Вот его суть:Изменение размера NSView для размещения подпунктов

У меня есть страница панели инструментов, которая содержит 2 PXListViews. Один из них получает данные из Core Data, а другой - из RSS-канала. Оба они добавляются в супервизор и связанный с ним контроллер (у меня есть режимы, отличные от Dashboard, так что это был самый эффективный способ). Этот супервизор становится документомView для моего NSScrollView.

Я могу получить все это, чтобы работать хорошо, за исключением того, что в режиме просмотра списка RSS-каналов. Я получаю канал асинхронно, чтобы он не задерживал пользовательский интерфейс, и как только фид был получен, и заполняется список, я автоматически изменяю его размер. Все это прекрасно работает, однако мне нужно изменить размер представления панели инструментов, чтобы получить полосы прокрутки. Поэтому я отправляю уведомление, которое приводит к методу autosizeView, который я создал, но все идет к черту.

Два списка ListViews начинают перекрываться, а содержимое верхнего - в нижнем. Снимок экрана ниже (красный есть границы прямоугольника, синяя рамка каждого подвид)

Это перед вызовом autosizeView: enter image description here

Это после его вызова: enter image description here

И для хорошей меры, это что это выглядит, как если бы я изменить размер PXListViews и не вызвать метод авторазмер в DashboardView в: enter image description here

Как вы можете видеть, она отлично работает до тех пор, пока я не называю autosizeViews, но тогда я не получаю тыс e скроллеров. Вот мой метод autosizeView:

-(void)autosizeView 
{ 
    //Resize the view to accommodate all subviews 
    NSRect oldFrame = [[self view] frame]; 
    CGFloat lastY = [_activityView frame].origin.y; 
    if (lastY < 0) { 
     CGFloat newHeight = oldFrame.size.height + (-lastY); 
     [[self view] setFrameSize:NSMakeSize(oldFrame.size.width, newHeight)]; 
    } 
} 

Я предполагаю, что все это дело что-то делать с координатами быть сброшенными, когда я изменить размер DashboardView, вызывая происхождение его подвидов пойти наперекосяк.

Любая помощь будет принята с благодарностью!

ответ

0

Ну, я решил это решить. Сложность, как оказалось, вызвана тем, что PXListView автоматически меняет свои высоты по мере изменения размера надзора. Быстрое использование changeAutoresizeMask: все, что было необходимо. Это всегда что-то простое эй?

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