У меня есть вопрос стиля кодирования, который, вероятно, нужно задать главного программиста Mac на работе - но так как я - единственный программист Mac, ну, в общем, ТАКИМ ОБРАЗОМ, это. У меня есть раскрывающийся GUI для моего программного обеспечения (3D модели, визуализация данных), и всплывающее окно является Главным образом управлением С вкладками с тонной материала на каждой вкладке (ползунки, переключатели, флажки, и т.д.) С чем-то как 20 средств управления на вкладку, и возможно полдюжины вкладок... с помощью единственного контроллера для всех представлений собираются стать громоздкими очень быстро.
Имеет MainViewController, который загружает набор Вкладок хороший стиль?
NSView *tabA = [[NSView alloc] initWithNibName:@"tabA.nib" bundle:[NSBundle bundleWithPath:@"/Applications/BOB.app"]];
NSView *tabB = [[NSView alloc] initWithNibName:@"tabB.nib" bundle:[NSBundle bundleWithPath:@"/Applications/BOB.app"]];
Это - kindof, как я делаю это на iOS, но я не уверен для Mac OS X. Я предпочитаю стиль, который предлагает пригодность для обслуживания и гибкость, поскольку код проходит разработку прототипа, и я, возможно, должен изменить его часто.
Если это не хороший стиль, что?
Спасибо!
Я думаю, что ваш стиль является разумным. Вы создаете подкласс NSViewController
для каждой вкладки и назначаете его NSTabView
с помощью NSTabViewItem
.
Кстати, я думаю, что лучше будет
NSViewController *tabAcontroller = [[TabAController alloc] init];
с @interface TabAController:NSViewController ... @end
с init
, определенным как
-init{
self=[super initWithNibName:@"tabA" bundle:nil];
if(self){
...
}
return self;
}
Обратите внимание, что вам не нужно расширение .nib
, когда вы вызываете initWithNibName:bundle:
. И вы не должны указывать жестко закодированный путь приложения. В iOS местоположение приложения задается ОС (с загадочными именами папок), но в OS X пользователь может свободно перемещать пакет приложений в любое место. Поэтому никогда не называйте основной пакет [NSBundle bundleWithPath:@"hard coded path"]
. Используйте просто [NSBundle mainBundle]
, или просто nil
в большинстве случаев. В документации написано, когда можно просто использовать nil
.