Вы можете запрограммировать класс 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
будет вашим единственным владельцем файла.
Я думаю, вы также можете указать '@ interface' для владельца файла, если вы хотите сделать это немного более чисто. –
Это отличный совет Кристофер. Спасибо, парни. – colm