Я обычно создаю свои проекты без IB-материала. Первая вещь, которую я делаю, состоит в том, чтобы снять изоляцию со всех ссылок на xibs, выходы обновили plist и т.д. и т.д. Никакие проблемы, работает отлично (в моем мире)!
Теперь, я просто установил 3.2 и попытался разработать свое первое приложение для iPad. Выполняя ту же процедуру как прежде, я создал находящийся в UISplitView проект приложения и снял изоляцию со всего IB-материала. Кроме того, я следовал за разделом в справочных документах Apple: Создавая Контроллер Представления Разделения Программно, но тем не менее, Основное представление никогда не показывают, только представление Детали (независимо от того, что ориентация). Я действительно попытался тщательно просмотреть это, но я не могу понять то, что я пропустил.
Существует ли рабочий пример UISplitViewController без перьев, плавающих вокруг где-нибудь? Я погуглил, но не мог найти никого. Или Вы знаете то, что я, вероятно, пропустил?
Объявите свой splitviewcontroller в заголовке делегата, используйте что-то подобное в своем didfinishlaunching
. Убедитесь, что вы добавили UISplitViewControllerDelegate в заголовочный файл detailViewController и что у вас есть методы делегата. не забудьте импортировать соответствующие файлы заголовков
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
splitViewController = [[UISplitViewController alloc] init];
rootViewController *root = [[rootViewController alloc] init];
detailedViewController *detail = [[detailedViewController alloc] init];
UINavigationController *rootNav = [[UINavigationController alloc] initWithRootViewController:root];
UINavigationController *detailNav = [[UINavigationController alloc] initWithRootViewController:detail];
splitViewController.viewControllers = [NSArray arrayWithObjects:rootNav, detailNav, nil];
splitViewController.delegate = detail;
[window addSubview:splitViewController.view];
РЕДАКТИРОВАТЬ - согласно отличному предложению Скотта ниже, не добавляйте в подвид Windows, вместо этого
[self.window setRootViewController:(UIViewController*)splitViewController]; // that's the ticket
[window makeKeyAndVisible];
return YES;
}
//detailedView delegate methods
- (void)splitViewController:(UISplitViewController*)svc
willHideViewController:(UIViewController *)aViewController
withBarButtonItem:(UIBarButtonItem*)barButtonItem
forPopoverController:(UIPopoverController*)pc
{
[barButtonItem setTitle:@"your title"];
self.navigationItem.leftBarButtonItem = barButtonItem;
}
- (void)splitViewController:(UISplitViewController*)svc
willShowViewController:(UIViewController *)aViewController
invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
self.navigationItem.leftBarButtonItem = nil;
}
Я также предпочитаю код для IB; -)