2012-04-05 30 views
12

Hikaye panosunda, bir açılış ekranı olarak bir görünüm var. Bu görünümde, "Açık Uygulama" gibi bir düğüme sahibim, bu da menü görünümünü bir modal segue ile açıyor. Ancak, ekranın 2 saniye sonra göründüğü gibi otomatik olarak segue gerçekleştirmesini de istiyorum. BuradaGecikme ile Segue Nasıl Gerçekleştirilir

Bazı kod: Gördüğünüz gibi

- (void)viewDidAppear:(BOOL)animated 
{ 
    [self performSegueWithIdentifier:@"splashScreenSegue" sender:self]; 
} 

, zaten performSegueWithIdentifier kullanmak ama hemen gerçekleştirir. Gecikmesi için bir yöntem var mı?

Şimdiden teşekkürler.

cevap

25

Sen e.x, görüntü çıkar 2 saniye sonra segue kodların çalıştırılması OBEB en dispatch_after kullanabilirsiniz:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 

    double delayInSeconds = 2.0; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
     [self performSegueWithIdentifier:@"splashScreenSegue" sender:self]; 
    }); 
} 

Ayrıca, UIViewController'ın yaşam döngüsü yöntemleri geçersiz kılmak için süper uygulanmasını aramayı unutma emin olun.

+0

hmm çok kolay, ha? hayır sürpriz ^^ Bu kod beni kafa karıştırıcı: [self performSelector: @selector (showSplash) withObject: nil afterDelay: SPLASH_HIDE_DELAY]; Megues için benzer bir yol varsa diye merak ettim. Teşekkürler. – kubilay

5

Denetleyicinin kendisini gönderim sorunlarını ele almasını sağlayan daha iyi bir yaklaşım olduğunu düşünüyorum. Böyle bunu başarabilir:
ilk Eğer mevcut görünüm denetleyicisi içinde başka bir görünüm denetleyicisi kullanacağım kod satırını göstermek istediğinizde daha sonra Sonra onun seçici

- (void)showAnotherViewController{ 
    [self performSegueWithIdentifier:@"yourSegueToAnotherViewController" sender:self]; 
} 

kullanacağı böyle bir yöntem oluşturun:

[self performSelector:@selector(showAnotherViewController) withObject:nil afterDelay:yourDelayInSeconds]; 
İlgili konular