Какао вопрос о стиле кодирования NSTabView

У меня есть вопрос стиля кодирования, который, вероятно, нужно задать главного программиста 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. Я предпочитаю стиль, который предлагает пригодность для обслуживания и гибкость, поскольку код проходит разработку прототипа, и я, возможно, должен изменить его часто.

Если это не хороший стиль, что?

Спасибо!

1
задан Stephen Furlani 27 July 2010 в 12:42
поделиться

1 ответ

Я думаю, что ваш стиль является разумным. Вы создаете подкласс 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.

2
ответ дан 2 September 2019 в 22:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: