Управлявайте множество стилове на главния прозорец в cocoa

Кой е най-добрият начин за превключване между множество стилове на главни прозорци в cocoa? Имам предвид нещо като iTunes с изглед на миниплейър и изглед с нормален размер. Искам да оформя различни nib-файлове и да оставя на потребителя да избира между малкия или по-големия с повече подробности.
Имам ли нужда от NSWindowController или е добре да зареждам nib-ове в App Delegate по този начин:
[NSBundle loadNibNamed:@"BigWindow" owner:self];


person Gary    schedule 22.01.2012    source източник


Отговори (1)


Винаги трябва да използвате NSWindowController за зареждане на перо, съдържащо прозорец. Това е така, защото NSWindowController управлява управлението на паметта на писеца вместо вас, което иначе е донякъде болезнено.

Ако просто искате да заредите изглед от перо, използвайте NSViewController вместо това.

person Rob Keniger    schedule 22.01.2012
comment
хм благодаря, опитвам се да споделя някаква логика между прозорците. И двата прозореца правят едно и също нещо, просто имат различен размер и вид. когато използвам NSWindowController за всеки прозорец (xib-файл) и присвоявам делегата на приложението, получавам екземпляр на делегата на приложението за всеки контролер на прозорец. Мисля, че наблюдавам нещо. Трябва да има лесен начин да направите това (както се прави в приложения на цял екран с различно оформление). - person Gary; 22.01.2012
comment
Контролерът на вашето приложение трябва програмно да инстанцира контролерите за прозорци и да поддържа препратка към тях (ivar). Какво имате предвид под присвояване на делегата на приложението? - person Rob Keniger; 23.01.2012
comment
Контролерът и делегатът на приложението ми са едни и същи. Създавам инстанция на прозоречен контролер и го получавам като ivar на делегата. Във файла xib имам обект делегат на приложение, за да осъществявам връзките към IBActions в делегата на приложението. Когато вляза в метод от прозореца, виждам, че делегатът на приложението ivars има адрес 0x0. самият делегат на приложението има друг адрес, отколкото в метода „appDidFinishLoading“. Когато извикам метод от главното меню, всичко е наред. Значи обърках нещо. Грешно ли е делегирането на приложението във всеки xib да извиква IBActions? - person Gary; 23.01.2012