8

iOS programlaması konusunda oldukça yeniyim ve 4 Görünüm Denetleyicisine sahip bir iPad uygulaması üzerinde çalışıyorum (adı FirstViewController, SecondViewController, vb.). Şu anda Sekme Çubuğu Denetleyicisi, uygulamanın varsayılan başlangıç ​​noktası olarak ayarlanmıştır. Bu noktaya gelmeden önce kullanıcının kimliğini doğrulayabilmek istiyorum, bu yüzden Storyboard'da kendiliğinden yüzen LoginViewController adlı başka bir View Controller ekledim. Yapmak istediğim nepresentModalViewController'ı storyboard'larla kullanma

uygulama yüklemek ve didFinishLaunching içinde, giriş sayfasını kimlik doğrulama işlemi tamamlanana kadar, o zaman görevden görüntülemek izin olduğunu. Son birkaç gündür etrafta araştırıyorum ama denediğim her şey başarısız oldu.

Benim en güncel girişimi Herhangi bir yardım mutluluk duyacağız

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]]; 

UINavigationController *loginVC = [storyboard instantiateViewControllerWithIdentifier:@"loginVC"]; 

loginVC.modalPresentationStyle = UIModalPresentationFullScreen; 

[self.window.rootViewController presentModalViewController:loginVC animated:YES]; 

oldu. Derler ve çalışır, ancak manzara hiç gösterilmez ve bunun neden olduğu konusunda kafam karıştı.

cevap

12

Sorun aslında bu sadece bir UIViewController bir UINavigationController olarak bunu oluşturmaya çalışıyordu oldu. AppDelegate.m içinde applicationDidBecomeActive içinde bu çağrı hile yaptı. Swift 2'de

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UIViewController *loginVC = [storyboard instantiateViewControllerWithIdentifier:@"loginVC"]; 
loginVC.modalPresentationStyle = UIModalPresentationFullScreen;  
[self.window.rootViewController presentModalViewController:loginVC animated:YES]; 
2

Görüntülenecek olan görünümden değil, şu anda görüntülenen viewController'dan "presentModalViewController" aramanız gerekir. Olasılıkla, böyle bir şey:

[self.window.rootViewController presentModalViewController:loginVC animated:YES]; 
2

, bu şimdi:

if let loginController: LoginViewController = mainStoryboard.instantiateViewControllerWithIdentifier("StoryboardControllerID") as? LoginViewController { 
    loginController.modalPresentationStyle = .FullScreen 
    self.window?.rootViewController?.presentViewController(loginController, animated: true, completion: {() -> Void in 
     // do stuff! 
    }) 
}