8

Moja UISplitViewController zasadniczo działa jak zaklęcie, z wyjątkiem tego, że pojawia się irytujący komunikat o błędzie podczas przejścia pierwszy raz (pierwszy raz!) Z głównego widoku tabeli do widoku szczegółowego.Połączenia asymetryczne do przejść między wyglądem początkowym i końcowym w UISplitViewController

Unbalanced calls to begin/end appearance transitions for <UINavigationController: 0x160015600>. 

Zarówno główny i regulator zobacz szczegóły są osadzone w UINavigationController. Jednak błąd występuje tylko przy ustalaniu następująco (co jest konieczne dla zachowania logiki na iPhone):

class MySplitViewController: UISplitViewController, UISplitViewControllerDelegate { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.delegate = self 
    } 

    func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool { 
     return true 
    } 
} 

Byłoby wspaniale, gdyby każdy mógł dostarczyć rozwiązanie tego problemu, dzięki z góry.

BTW: kontroler widoku podzielonego została powołana w serii ujęć

Przedstawiając kontroler widok szczegółów odbywa się w metodzie tableView:didSelectRowAtIndexPath: tak:

if let detailViewController = delegate as? DetailViewController { 
    detailViewController.navigationItem.leftItemsSupplementBackButton = true 
    detailViewController.navigationItem.leftBarButtonItem = splitViewController!.displayModeButtonItem() 
    splitViewController!.showDetailViewController(detailViewController.navigationController!, sender: self) 
} 
+0

Facing ten sam problem podczas budowania wszystko programowo jak również. Więc przypuszczam, czy jest to zrobione na storyboardzie lub programowo, ten problem występuje. – user1046037

+0

Odwołaj się - http://cdn3.raywenderlich.com/wp-content/uploads/2015/05/MathMonsters-Swift-Final.zip, a następnie dodaj 'func splitViewController (splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool {return true} ' – user1046037

+0

Wypróbuj na iPhonie – user1046037

Odpowiedz

2

Najprawdopodobniej Twoja pierwsza przejście od mistrza (UITableView w UIViewController?), Aby wyświetlić szczegóły (UIViewController) przed uruchomieniem widoku aktywnego/bieżącego.

Możliwe, że prawdopodobnie próbujesz przedstawić pierwszą "instancję" widoku szczegółowego w metodzie viewDidLoad() twojego mistrza UIViewController? W takim przypadku aplikacja może próbować wyświetlić szczegółowy widok , zanim widok główny zakończy się wyświetleniem:. Zauważ różnicę tutaj między widzenia nie obciążenie rzutem i widok stawiła:

przesłanianie func viewDidLoad()

Opis:

Wywoływana po widzenia regulatora jest ładowane do pamięci.

Ta metoda jest wywoływana, gdy kontroler podglądu ma załadowany hierarchii do widoku do pamięci.


ręczne func viewDidAppear (animowany: Bool)

Opis

powiadamia sterownik że jej widok dodano do widoku hierarchii. Możesz zastąpić tę metodę, aby wykonać dodatkowe zadania związane z wyświetlaniem widoku.

Teraz, jako że pytanie nie pokazuje, w jaki sposób załadować swój początkowy widok szczegółowy następujące rada może jest już brane pod uwagę przez siebie, ale w każdym razie: jeśli szczegółowo przedstawiono widok z viewDidLoad(), spróbuj przenieść ten metody viewDidAppear():

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(true) 

    // present/load detail view here instead 
} 
+0

Przepraszamy za niewyjaśnienie, kiedy przedstawiam kontroler widoku szczegółów, sprawdź edytowane pytanie. Mimo to, dziękuję za wysiłek, przeczytałem to również przed zadawaniem tego pytania, jednak nie mogę wymyślić, w jaki sposób moja aplikacja to robi. – borchero

+0

@OliverBorchert Hmm, to bez bardziej szczegółowego widoku twojego kodu, tak naprawdę nie wiem. Czy możliwe jest animowanie niektórych przejść w pewnym momencie pierwszej zmiany stanu do szczegółów? ('animacja: ...'). Jeśli tak, to ewentualnie ustaw takie animacje na 'false' dla testowania, jeśli są one przyczyną twojego błędu (tj. Powodując nakładające się przejścia) – dfri

+0

Naprawdę mam tylko kontroler widoku podzielonego w mojej aplikacji:/ – borchero

0

to może być zbyt późno odpowiedź, ale tak czy inaczej, ja to rozwiązane za pomocą wykonywania segue zamiast showDetailViewController

+0

'showDetailViewController' ma specjalny cel w' UISplitViewController', który przesuwa/prezentuje w zależności od klas wielkości (adaptacyjne). Więc lepiej jest użyć 'showDetailViewController', ale to wydaje się być problemem – user1046037

Powiązane problemy