Я реализовал UINavigationController в своем приложении для iphone в качестве основного интерфейса навигации.
Когда мне нужно добавить новый xib в мой стек UINavigationController, я должен написать новый метод, подобный этому (пример для ContactsView.xib):
- (void) switchToContactsView
{
// lazy load
if (self.contactsViewController == nil)
{
ContactsViewController *contactsController = [[ContactsViewController alloc]
initWithNibName:@"ContactsView" bundle:nil];
self.contactsViewController = contactsController;
[contactsController release];
}
[navigationController pushViewController:contactsViewController animated:YES];
}
Проблема в том, что сейчас в моем приложении много и много экранов .xib, и для каждого нового экрана мне приходится копировать и вставлять один и тот же код, просто меняя имя метода и имена классов в нем.
Есть ли более эффективный способ сделать это? Например, можно создать какой-то один метод, который принимает параметры (имя подкласса xib и uiviewcontroller), поэтому я могу просто вызвать его с этими параметрами, чтобы загрузить новый xib и переключиться на него. Проблема в том, что я не знаю, как передать имя класса методу (например, класс ContactsViewController в приведенном выше примере). Любая помощь?