6

Bir ipad uygulamasının başlatılması sırasında şartlı olarak bir giriş ekranı görüntülemek istiyorum. Her zaman değil, yalnızca periyodik olarak giriş yapmaları gerektiğinden, varsayılan bir oturumun parçası yapmak istemiyorum.ipad uygulama başlangıcında bir modal görünümü görüntüleme

Sorunun numerousexamples'u var, ancak bunların tümü ios5'in önceliği gibi görünüyor. Ancak, hikaye tahtalarını kullandığımda hiçbir şey işe yaramıyor gibi görünüyor.

için her görüntülemede bir metin etiketi koymak, film şeridi * film şeridine yeni viewcontroller eklemek kullanarak, * Yeni bir tek görünüm uygulaması oluşturmak, özünde bu azaltmak o * "loginScreen" nin bir tanımlayıcı vermek Onları görsel olarak ayırt eder. appDelegate içinde *:

Ben örneklerinden gördüklerime
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    UIStoryboard *storyboard = [self.window.rootViewController storyboard]; 
    UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"loginScreen"]; 
    [self.window.rootViewController presentModalViewController:loginController animated:TRUE]; 

    return YES; 
} 

, o çalışmalıdır. Ancak yine de sürekli olarak orijinal rootViewController'in görünümünü görüntüler. Hata yok.

Kimse eksik (muhtemelen küçük) şeyi işaret edebilir mi?

cevap

2

Uygulamanın didFinishLaunching yönteminde etkin durumda olmadığı ortaya çıkıyor.

koymak için uygun bir yer

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    UIStoryboard *storyboard = self.window.rootViewController.storyboard; 
    UIViewController *loginController = [storyboard instantiateViewControllerWithIdentifier:@"loginScreen"]; 
    [self.window.rootViewController presentModalViewController:loginController animated:NO]; 
} 
2

@deafgreatdane yanıyor: Çözelti modal uygulaması (istenebilir) bir arka plan halinde olan aktif hale her görünüm denetleyicisi mevcut olacaktır. Benim durumumda

modal başlatma ekranı yalnızca bir kez görünür olduğundan emin olmak için bunu çözüm için bir dispatch_once eklersiniz (sadece ekranını başlatmak bir defalık göstermek için bu kullanarak):

- (void)applicationDidBecomeActive:(UIApplication*)application 
{ 
    static dispatch_once_t onceToken; 

    dispatch_once(&onceToken,^
       { 
        SomeLaunchViewController* launchViewController = [[SomeLaunchViewController alloc] init]; 
        [self.window.rootViewController presentViewController:launchViewController animated:NO completion:NULL]; 
       }); 
} 

Bu kod snippet'i ARC kullanır.

İlgili konular