2012-06-19 2 views
3

Я нашел много людей, которые спрашивали информацию о том, как иметь представление «Мастер», отображаемое как в пейзажной, так и в портретной ориентации, но то, что я пытаюсь сделать, - это иметь право главный вид скрыт независимо от ориентации устройства и выскакивает сбоку с помощью кнопки навигации.Скрывающий мастер-контроллер просмотра в SplitView независимо от ориентации устройства

Что мне очень помогло бы, если бы кто-нибудь мог сказать мне, где логика скрытия главного представления находится/выполняется, когда устройство переориентируется. Я смотрел шаблон, который поставляется с Xcode, Master/detail view для iOS, и я заметил, что эти два следующих метода объявлены в файле AppDelegate.m, но я не могу найти, где они выполняются из :

//Called when a button should be added to the nav bar for a view that is hidden 
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController: (UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController 
{ 
    barButtonItem.title = NSLocalizedString(@"Master", @"Master"); 
    [self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES]; 
    self.masterPopoverController = popoverController; 
} 

- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem 
{ 
    // Called when the view is shown again in the split view, invalidating the button and popover controller. 
    [self.navigationItem setLeftBarButtonItem:nil animated:YES]; 
    self.masterPopoverController = nil; 
} 

Вся помощь будет оценена по достоинству.

ответ

9

У вас фактически нет контроля над UISplitViewController. Главный вид всегда присутствует в ландшафтном представлении, и нет возможности изменить это.

Однако, «Matt Gemmell создал отличный пользовательский элемент splitViewController под названием« MGSplitViewController ». Он очень легко реализован, сильно прокомментирован и содержит множество отличных функций, не найденных с обычным splitViewController (скрыть главный вид в альбомном режиме, изменить размещение раскола в ландшафтном представлении, позволяет пользователю изменять размер раскола во время работы и т. д.). "

Информация и демо: http://mattgemmell.com/2010/08/03/mgsplitviewcontroller-updated/

прямо к источнику: https://github.com/mattgemmell/MGSplitViewController/

- = - = - = - = - = - = - = - = - = - = - = -

Я отправил это раньше в аналогичной (но разные) вопрос с такой же ответ здесь:

How to hide master view in UiSplitviewcontroller in ipad

- = - = - = - = - = - = - = - = - = - = - = -

UPDATE:

В прошивкой 5.0 и выше, они, наконец, добавили функциональность, чтобы скрыть главный вид в пейзаж!

-(BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation 
{ 
    return YES; 
} 

Ссылка: splitViewController in Ipad that doesnt hide in portrait

+0

Спасибо за ответ и ссылки. Обязательно проверьте это. – Hrafn

+1

Несомненно, никаких проблем. Кроме того, похоже, что совсем недавно в iOS 5.0 они добавили функциональность, чтобы сделать именно то, что вы ищете! Хотя у MGSplitViewController есть много отличных дополнительных функций, это может быть простое исправление, которое вы ищете. @MrDresden – Highrule

+1

Есть ли способ отобразить контроллер вида, как только вы его спрятали? Кажется, я не могу найти способ снова вызвать эту функцию – Kyle

Смежные вопросы