Należy wdrożyć UISplitViewControllerDelegate. Najprostszym sposobem może mieć własną klasę MySplitViewController i wyznaczyła sobie jako delegat w viewDidLoad:
self.delegate = self;
Po pierwsze, może chcesz showDetailViewController wyglądać mniej więcej tak:
- (BOOL) splitViewController:(UISplitViewController*)splitViewController showDetailViewController:(UIViewController*)vc sender:(id)sender
{
if (splitViewController.collapsed)
{
[(UINavigationController*)splitViewController.viewControllers[0]) pushViewController:vc animated:YES];
}
else
{
self.viewControllers = @[ self.viewControllers.firstObject, vc ];
}
return YES;
}
To powinno dbać o właściwą pokazywanie widoku szczegółów w obu orientacjach.
Następnie należy wdrożyć następujące metody delegata podobny do tego:
- (UIViewController*) splitViewController:(UISplitViewController*)splitViewController
separateSecondaryViewControllerFromPrimaryViewController:(UIViewController*)primaryViewController
{
UINavigationController* nc = primaryViewController;
UIViewController* detailVC = nc.viewControllers.lastObject;
return detailVC;
}
Metoda ta jest okazja, aby wziąć co chcesz od kontrolera głównego i powrócić że jako szczegół widoku kontrolera. Powyższy przykładowy kod jest dość prosty, możesz potrzebować przejść przez widok nawigacyjnyControllers i wybrać wszystkie rozpoczynające się od określonego kontrolera widoku (zakładając, że popchnąłeś z widoku szczegółów).
W każdym razie naprawdę warto było poświęcić trochę czasu i przeczytać: UISplitViewController class reference, a zwłaszcza UISplitViewControllerDelegate Protocol Reference To będzie znacznie wyraźniejsze. Jeśli chcesz uzyskać skrót, spójrz na projekt szablonu podzielonego widoku kontrolera Xcode. Ta powinna również zawierać wskazówkę lub dokładne rozwiązanie twojego problemu.