Mam kontroler widoku, który zawiera widok tabeli, elementy w tabeli można wybrać i poprawnie utworzyć kontroler widoku szczegółów."Niesymetryczne wywołania przejść dla początku/końca dla elementu DetailViewController" podczas przesuwania więcej niż jednego kontrolera widoku szczegółowego
Pozycje w tabeli przedstawiają elementy, które mogą zawierać powiązany z nimi wyzwalacz czasowy, a dla każdej pozycji zaplanowane jest powiadomienie lokalne, jeśli aplikacja znajduje się na pierwszym planie po wygaśnięciu powiadomienia lokalnego, a następnie w widoku szczegółowym dla elementu jest automatycznie wyświetlany.
Mam problem, który manifestuje się, gdy dwa powiadomienia wygasają w tym samym czasie, co powoduje, że widoki nie są wyświetlane poprawnie, a ponadto dzienniki konsoli: "Niezrównoważone wywołania przejść do początku/końca dla NNN", gdzie NNN jest mój kontroler widoku szczegółów.
tabela widok kontroler jest tworzony w następujący sposób:
self.tableViewController = [[TableViewController alloc] initWithNibName:@"TableView" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.tableViewController];
self.window.rootViewController = navController;
Kiedy miejscowy zgłoszenie wygasa i didReceiveLocalNotification: wywoływana jest aplikacja nadaje powiadomienie za pomocą NSNotifcationCenter postNotificationName a do którego widok kontroler stolik nasłuchuje. Kiedy kontroler widoku tabeli otrzyma to powiadomienie tworzy kontroler widok szczegółów i popycha go na stosie jako:
[self.navigationController pushViewController:detailViewController animated:YES];
Czytałem gdzieś, że może być problem, jeśli kontroler widok popycha innego kontrolera widoku, gdy jest sam nie na górze stosu - więc pomyślałem, że to musi być problem, ponieważ gdy kontroler widoku tabeli otrzyma drugie powiadomienie, nie będzie już na wierzchu stosu nawigacji, ponieważ wcześniej popchnął kontroler widoku szczegółów na stos po otrzymaniu pierwszego powiadomienia.
Więc zmieniłem kod Push to:
[[self.navigationController topViewController].navigationController pushViewController:detailController animated:YES];
Ale to nie miało znaczenia.
Więc obok myślał że może być problem, bo pierwszy kontroler szczegółowy widok nie był już szansę w pełni pokazać przed 2 kontrolera widok był popychany - więc zmieniłem aplikacji zgłoszenia delegowania z użyciem:
[[NSNotificationCenter defaultCenter] postNotificationName:
do
[[NSNotificationQueue defaultQueue] enqueueNotification: postingStyle:NSPostWhenIdle]
Tak, że popycha nie nastąpi w tym samym iteraction pętli aplikacji. Ale to nie miało znaczenia, ani nie próbuje wprowadzić opóźnienie do pchania Widok szczegółowy controlle:
double delayInSeconds = 0.1;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[[self.navigationController topViewController].navigationController pushViewController:detailController animated:YES];
});
Nie mam pojęcia, na czym polega problem i co próbować dalej, jakieś pomysły?
wdał się w podobnej sytuacji znalazł Fix: http://stackoverflow.com/questions/19500025/uinavigationcontroller-transition-animations-triggered-too-fast/19738292#19738292 –