/ / Použitie navigačného ovládača v ovládacom paneli TabBar Iphone 6+ IOS 8.3 - uinavigationcontroller, uitabbarcontroller, iphone-6-plus, ios8.3

Používanie navigačného ovládača v ovládacom paneli TabBar Iphone 6+ IOS 8.3 - uinavigationcontroller, uitabbarcontroller, iphone-6-plus, ios8.3

Nedávno som čelil problému v mojej aplikácii na iphone 6+ IOS8.3. Problémom je, že používam uitabbarController v mojej aplikácii a každá karta radiča panelov obsahuje uinavigationController.

Teraz keď si vyberiem kartu 6/7 tým, že prejdete na kartu Ďalšie a potom otočíte obrazovku, zobrazí sa čierna obrazovka.

Na otestovanie scenára som urobil saperate aplikáciu a vytvoril rovnakú štruktúru, to znamená 9 záložiek a každá záložka obsahuje navigačný ovládač. Toto všetko sa deje na storyboarde a nebol napísaný žiadny kód.

Potom spustim aplikáciu a vyberiem šiestu kartu a otočím obrazovku, objaví sa čierna obrazovka. a keď sa otočím späť do portrétu, všetko sa opäť vráti.

Na ďalšie vysvetlenie prikladám snímky obrazovky.

i Vytvorte fiktívnu aplikáciu s 9 kartami, každá karta má funkciu UinavigationController.Tap na Viac a zobrazte zvyšné karty.

vyberte šiestu kartu (druhá karta v záložke Ďalšie)

Otočte zariadenie, ktoré bude zobrazovať čiernu obrazovku.

Takže každý, kto môže povedať, prečo sa zmení na čiernu obrazovku? Robím to zle? alebo To je chyba IOS8.3 alebo niečo iné?

odpovede:

0 pre odpoveď č. 1

Dnes som narazil na ten istý problém a keďže táto otázka nebola zatiaľ odpoveďou, chcel by som predstaviť moje jednoduché riešenie.

  1. Vo svojej podtriede UITabbarController sa prihláste na udalosti striedania:

    [[NSNotificationCenter defaultCenter] addObserver:self                                          //Add yourself as an observer
    selector:@selector(orientationChanged:)
    name:UIDeviceOrientationDidChangeNotification
    object:[UIDevice currentDevice]];
    
  2. Pridajte nasledujúci kód do metódy rotačného pozorovateľa:

    - (void) orientationChanged:(NSNotification *)notification {
    if (IS_IPHONE_6P) { // some magic to figure out if we"re on iphone 6 plus
    self.customizableViewControllers = @[]; // we don"t want an edit button to appear
    if (self.selectedIndex == 5 || self.selectedIndex == 6) { // the effect only happens to view controllers at index 5 and 6.
    [self.moreNavigationController popToRootViewControllerAnimated:NO]; // pop the view controller from the moreNavigationViewController
    self.selectedViewController = self.viewControllers[self.selectedIndex]; // set the selected view controller to be visible again.
    }
    }
    }