Я новичок в объективе-C, так что терпите меня.Я начал с шаблона универсального приложения в Xcode4 и создал свое приложение.Существует соглашение, что шаблон начинает вас с того, что я пытался придерживаться.Для каждого View Controller есть основной файл и подкласс для каждого типа устройства.Например:
Project/
ExampleViewController.(h|m)
- iPhone/
- ExampleViewController_iPhone.(h|m|xib)
- iPad/
- ExampleViewController_iPad.(h|m|xib)
По большей части это довольно удобно.Большая часть логики идет в суперклассе, и подклассы заботятся о любой конкретной реализации устройства.
Вот часть, которую я не понимаю.Иногда у меня есть код, который делает то же самое в каждом подклассе просто потому, что мне нужно загрузить разные XIB для каждого устройства.Например:
ExampleViewController_iPhone
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Content *selectedContent = (Content *)[[self fetchedResultsController] objectAtIndexPath:indexPath];
ContentDetailViewController_iPhone *detailViewController = [[ContentDetailViewController_iPhone alloc] init];
detailViewController.content = selectedContent;
detailViewController.managedObjectContext = self.managedObjectContext;
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
ExampleViewController_iPad
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Content *selectedContent = (Content *)[[self fetchedResultsController] objectAtIndexPath:indexPath];
ContentDetailViewController_iPad *detailViewController = [[ContentDetailViewController_iPad alloc] init];
detailViewController.content = selectedContent;
detailViewController.managedObjectContext = self.managedObjectContext;
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
... обратите внимание, что во втором случае отличается только то, что он загружает _iPad
версия View Controller.Это необходимо, потому что контроллеры вида iPad
и iPhone
подключены к отдельным, указанным устройствам.
Каков «правильный» шаблон для этого?
ОБНОВЛЕНИЕ
Я нашел этот ответ о загрузке отдельных XIB-файлов с использованием модификаторов устройства, что может помочь в случае, когда мне не нужен определенный подкласс для одного устройства,но это все равно не поможет, если мне понадобится создать экземпляр _iPhone
или _iPad
экземпляра контроллера представления для определенных функций устройства.