3

Я создал некоторый пользовательский UITableViewCells в файле nib и хотел бы использовать его для нескольких UIViewControllers.Повторное использование nib на нескольких UIViewControllers

Может ли кто-нибудь сказать мне, как лучше всего это сделать? Мои ограниченные знания вокруг загрузочных наконечников, похоже, предполагают, что вам нужно указать один класс владельца в Interface Builder.

Спасибо.

ответ

2

Просто сделайте это; нет реальных препятствий. Что касается класса для владельца файла, если ключи, которые вы связываете в nib, существуют в любом объекте, в котором вы хотите использовать nib, вы будете в порядке.

+1

Я думаю, вы также можете указать '@ interface' для владельца файла, если вы хотите сделать это немного более чисто. –

+0

Это отличный совет Кристофер. Спасибо, парни. – colm

1

Вы можете запрограммировать класс UIViewController с помощью initWithNibName:bundle: и указать тот же нить для нескольких контроллеров. Например, сейчас я создаю игру, у которой есть класс GameController, который определяет основную логику игры. GameController имеет связанный GameController.xib файл, который будет загружаться в пользовательской инициализаторе:

- (id)initWithOptions:(NSDictionary *)gameOptions 
{  
    if (self = [super initWithNibName:@"GameController" bundle:nil]) 
    { 
     // code here 
    } 
    return self; 
} 

У меня есть несколько различных типов игры: равный-равному, местных, & онлайн. Логика игры такая же, но реализация связи немного отличается, поэтому каждый из них является подклассом GameController. Исходя из того, как используется приложение, оно будет экземпляр другой контроллер:

local = [[LocalGameController alloc] initWithOptions:options]; 
online = [[OnlineGameController alloc] initWithOptions:options]; 

Вы можете видеть, однако, что, поскольку они, как продлить GameController, что оба они будут init'ed с GameController.xib как его зрения. В этом случае GameController будет вашим единственным владельцем файла.

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