Как мы можем изменить представления в UISplitViewController, кроме как с помощью всплывающего окна и выбора?

Я сделал образец приложения с UISplitViewController, изучая предоставленный ими пример. Я создал три подробностей и настроил их для изменения средствами по умолчанию. Либо используя левый/главный вид в альбомной ориентации, И используя всплывающее окно в портретной ориентации.

Теперь я пытаюсь перейти к другому представлению (предыдущему/следующему) из текущего представления, используя свайп влево/вправо в каждом представлении. Для этого я просто создал функцию в RootViewController. Я скопировал и вставил тот же код, что и для выбора строки таблицы, используемой всплывающим окном из RootViewController. Я вызываю эту функцию из контроллера моего текущего представления и передаю соответствующий индекс представления (который будет отображаться далее) из текущего представления. Функция вызывается, но ничего не происходит.

Пожалуйста, помогите мне ИЛИ есть ли другой способ сделать это, кроме этого сложного шага? Я даю функцию, которую я использовал для изменения представления.

 - (void) rearrangeViews:(int)viewRow
{
UIViewController <SubstitutableDetailViewController> *detailViewController = nil;

if (viewRow == 0) {
    DetailViewController *newDetailViewController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil];
    detailViewController = newDetailViewController;
}

if (viewRow == 1) {
    SecondDetailViewController *newDetailViewController = [[SecondDetailViewController alloc] initWithNibName:@"SecondDetailView" bundle:nil];
    detailViewController = newDetailViewController;
}

if (viewRow == 2) {
    ThirdDetailViewController *newDetailViewController = [[ThirdDetailViewController alloc] initWithNibName:@"ThirdDetailView" bundle:nil];
    detailViewController = newDetailViewController;
}

// Update the split view controller's view controllers array.
NSArray *viewControllers = [[NSArray alloc] initWithObjects:self.navigationController, detailViewController, nil];
splitViewController.viewControllers = viewControllers;
[viewControllers release];

if (rootPopoverButtonItem != nil) {
    [detailViewController showRootPopoverButtonItem:self.rootPopoverButtonItem];
}

[detailViewController release]; 

}


person wolverine    schedule 10.04.2010    source источник


Ответы (1)


Я погуглил и нашел хороший подход. Они используют UINavigationController в подробном представлении для отправки новых представлений. Вы можете использовать это же решение для своего проекта.

http://www.cimgf.com/2010/05/24/fixing-the-uisplitviewcontroller-template/

person mracoker    schedule 26.05.2011