5

Aby ustawić scenę mam:Dwa UISplitViewControllers, 1 (Shared) Widok szczegółowy

  • A Zabezpieczenie View Controller z 2 kartami
  • Każda karta ma Podziel widok Controller
  • Chciałbym skieruj widok szczegółów każdego kontrolera widoku podzielonego na widok SAME na .

Dołączyłem bardzo prosty sample project showing the issue.

Uruchom go na iPadzie 5.1 Sim, obserwuj każdą kartę. Jedna pokazuje widok szczegółów wspólnych, jedna zawiedzie.

NSLog debugowanie donosi, że drugi widok podzielonego posiada kontroler NULL szczegółowy widok:

 
2012-04-28 07:21:55.451 svcTest[14597:f803] tabBarController viewControllers = (
    "UISplitViewController: 0x6a36100", 
    "UISplitViewController: 0x6a39ab0" 
) 
2012-04-28 07:21:55.455 svcTest[14597:f803] svcA.viewControllers = (
    "UINavigationController: 0x6a36250", 
    "UIViewController: 0x6a38720" 
) 
2012-04-28 07:21:55.457 svcTest[14597:f803] svcB.viewControllers = (
    "UINavigationController: 0x6a39cc0" 
) 

Po kliknięciu zakładki drugi dostaniesz ten błąd:

2012-04-28 07:22:58.457 svcTest[14597:f803] Splitview controller is expected to have a detail children before its used! 
2012-04-28 07:22:58.459 svcTest[14597:f803] Split view controller should have its children set before layout!

Patrząc na storyboard mam już ustawić widoki szczegółów, więc to naprawdę mnie myli.

Storyboard

Każda pomoc się ten „wspólny” pogląd, aby pokazać się na każdej karcie jest bardzo cenione.

Dzięki!

Odpowiedz

1

I otrzymała tę samą ostrzeżenie, gdy określenie więcej niż dwa viewControllers dla splitViewController, jak pokazano poniżej:

self.splitViewController.viewControllers = @[masterNavigationController, detailNavigationController, subViewController]; 

Po usunięciu „subViewController” z tablicy ostrzeżenie zniknęły.

Po przeczytaniu dokumentacji Apple na dodawanie/usuwanie subviews wymienia następujące:

The array in this property must contain exactly two view controllers. The view controllers are presented left-to-right in the split view interface when it is in a landscape orientation. Thus, the view controller at index 0 is displayed on the left side and the view controller at index 1 is displayed on the right side of the interface.

Możesz sprawdzić link do UISplitViewController Class Reference aby uzyskać więcej informacji.

1

Problem polega na umieszczeniu niektórych liniach zlokalizowanych w App delegata -applicationdidFinishLaunchingWithOptions:

Tutaj podział widok kontroler delegat jest ustawiona przed viewControllers. To wydaje się być źródłem problemu, a jeśli odwrócić dwie linie, jak pokazano poniżej komunikat ostrzegawczy znika:

użyć tego kodu, zamiast:

self.splitViewController = [[UISplitViewController alloc] init]; 
self.splitViewController.viewControllers = [NSArray 
          arrayWithObjects:masterNavigationController, 
          detailNavigationController, nil]; 
self.splitViewController.delegate = detailViewController; 

Szczegółowe wyjaśnienia można przyjrzeć : Splitview Controller Is Expected to Have a Master View Controller

+0

Dzięki za sugestię. Nie widziałem ostrzeżenia znikającego przez przeniesienie .delegate po przydziale .viewControllers, ale w moim przypadku udało mi się to naprawić, przenosząc niektóre właściwości, które ustawiałem po .viewControllers (w szczególności preferredDisplayMode, preferredPrimaryColumnWidthFraction ...). Piszę o systemie iOS 9.3. – ggould75

Powiązane problemy