Вы можете создать экземпляр класса 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
, оба они будут инициализированы с GameController.xib
в качестве своего вида. В этом случае GameController
будет вашим единственным владельцем файла.