Moje pytanie brzmi: w jaki sposób mogę uzyskać następujące odrodzenie odprawy niestandardowej do pracy na urządzeniu z wersją wcześniejszą niż iOS 9, a także na urządzeniu z systemem iOS 9?Niestandardowe odświeżanie dla systemu iOS 8 i iOS 9
Mam niestandardowy segment pokazujący kontroler widoku, a następnie odpowiedni segment niestandardowej opcji Unwind. Ten kod działa dobrze w systemie iOS 8 i jest implementowany przez tworzenie podklas UIStoryboardSegue i wdrażanie metody perform
. Potem zastąpi następujące metody w moim niestandardowego kontrolera nawigacji:
- (UIStoryboardSegue *) segueForUnwindingToViewController: (UIViewController *)toViewController fromViewController:(UIViewController *)fromViewController identifier:(NSString *)identifier
{
UIStoryboardSegue *segue;
if([fromViewController isKindOfClass:[MyViewController class]]){
segue = [[CustomSegue alloc] initWithIdentifier:identifier source:fromViewController destination:toViewController]; //Custom Unwind Segue
}
else{
UIStoryboardSegue *unwindSegue = [super segueForUnwindingToViewController:toViewController fromViewController:fromViewController identifier:identifier]; //Normal Unwind Segue
segue = unwindSegue;
}
return segue;
}
W iOS 9, segueForUnwindingToViewController
jest przestarzała. Nadal działa dla MyViewController CustomSegue; jednak domyślna zmiana odprężenia nie działa już dla żadnej innej zmiany odprężenia. Mimo, że wywołanie metody na super-powrotach odbywa się w trybie odsuwania, przejście nigdy nie występuje, kontroler widoku nigdy nie jest wyskakiwany, a użytkownik nie może powrócić do poprzedniego ekranu. Tak więc, aby było jasne, jeśli używam zwykłej ścieżki show, odpowiednia relacja rozwijana wywołuje tę nieaktualną metodę, która wywołuje metodę super i nie działa.
Obejrzałem przemówienie WWDC na storyborach, i udało mi się naprawić ten problem w iOS 9 przez a) już nie przesłoniłem tej metody w moim niestandardowym kontrolerze nawigacyjnym, i b) wchodząc do storyboardu, klikając na niestandardową zmianę i wprowadzanie CustomSegue
jako klasy Segue. Niestety, ponieważ jestem kierowany na system iOS 7, otrzymuję ostrzeżenie "Tylko niestandardowe segues obsługuje nazwy klas przed iOS 9", a niestandardowa zmiana odprężenia nie działa teraz w systemie iOS 7 lub iOS 8!