2013-01-22 11 views
6

Witaj, mam ViewController wykonujący segue na przycisku.Wykonywanie trików performSegueWithIdentifier w celu uniknięcia opóźnień początkowych

- (IBAction)moveToCoolViewButtonTapped { 
    [self performSegueWithIdentifier:@"toCoolView" sender:nil]; 
} 

Działa to dobrze, oprócz irytującego opóźnienia przy pierwszym wykonaniu, dlatego domyślny widok nie został jeszcze zainicjowany. Oczywiście nie chcę przedwcześnie tworzyć wielu widoków. (Istnieje kilka innych segues planowanych z tego samego viewController). Być może był to długi film, ale zastanawiałem się, czy ktoś ma jakieś genialnie inspirowane sztuczki, aby uniknąć początkowego opóźnienia?

Odpowiedz

1
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
toCoolView *yourViewController = (toCoolView *)[storyboard instantiateViewControllerWithIdentifier:@"toCoolView"]; 
[self.navigationController pushViewController:yourViewController animated:YES]; 

spróbować kolega

+1

Dzięki, ale nope. Dokładnie taki sam wynik, który ma sens, ponieważ w zasadzie robi dokładnie to samo (inicjowanie, a następnie wyświetlanie). –

0

Hej miałem ten sam problem. Przyszedłem po twoim poście szukając rozwiązania. Myślę, że w końcu znalazłem problem.

Problemy nie należą do performSegueWithIdentifier, ale do kontrolera docelowego (gdziekolwiek "doCoolView" zabierze Cię). sprawdź jego viewDidLoad i sprawdź, czy nie ma nic, co mogłoby zająć więcej czasu. W moim przypadku przydzielałem i inicjalizowałem UIImagepickerController, który powodował opóźnienie, więc usunąłem go stamtąd i umieściłem w ViewDidAppear.

Po prostu spróbuj skomentować każdą rzecz w swoim widokuDidLoad kontrolera docelowego i sprawdź, czy przyspiesza to seque.

nadzieję, że pomoże

2

spróbować zastąpić ten

[self performSegueWithIdentifier:@"toCoolView" sender:nil]; 

z tym

dispatch_async(dispatch_get_main_queue(),^{ 
    [self performSegueWithIdentifier:@"toCoolView" sender:nil]; 
}); 
Powiązane problemy