6

मैं आईपैड ऐप के लॉन्च पर सशर्त रूप से एक लॉगिन स्क्रीन प्रदर्शित करना चाहता हूं। मैं इसे डिफ़ॉल्ट सेग का हिस्सा नहीं बनाना चाहता, क्योंकि उन्हें केवल समय-समय पर लॉगिन करने की आवश्यकता होती है, हर बार नहीं।आईपैड एप्लिकेशन स्टार्टअप पर एक मोडल व्यू प्रदर्शित करें

मेरे प्रश्न के numerousexamples हैं, लेकिन वे सभी ios5 की भविष्यवाणी करते हैं। जब मैं स्टोरीबोर्ड का उपयोग करता हूं, हालांकि, कुछ भी काम नहीं करता है।

अपने सार को यह कम करने के लिए * एक नया ही दृश्य आवेदन बनाने के लिए, का उपयोग कर स्टोरीबोर्ड * स्टोरीबोर्ड के लिए एक नया ViewController जोड़ने के लिए, यह "loginScreen" * की एक पहचानकर्ता देने के लिए प्रत्येक दृश्य पर एक पाठ लेबल डाल उन्हें दृष्टि से अलग करें। * AppDelegate में:

- (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; 
} 

मैं क्या उदाहरण के देखा है से, कि काम करना चाहिए। लेकिन यह अभी भी मूल rootViewController के दृश्य को लगातार प्रदर्शित करता है। हालांकि कोई त्रुटि नहीं है।

क्या कोई मुझे याद कर सकता है (शायद छोटी) चीज़ जो मुझे याद आ रही है?

उत्तर

2

यह पता चला है कि ऐप didFinishLaunching विधि में सक्रिय स्थिति में नहीं है।

इस डाल करने के लिए उचित जगह है

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

@deafgreatdane: आपका समाधान दृश्य नियंत्रक रीति से हर बार आवेदन एक पृष्ठभूमि राज्य में किया जा रहा है (वांछनीय हो सकता है) से सक्रिय हो जाता है शुरू हो जाएगा।

मेरे मामले में (इस का उपयोग करते हुए एक बार की दिखाने के लिए केवल स्क्रीन का शुभारंभ) मुझे लगता है कि समाधान के लिए एक dispatch_once जोड़ना होगा लगता है कि मॉडल लॉन्च स्क्रीन केवल एक बार दिखाई देगा बनाने के लिए:

- (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]; 
       }); 
} 

यह कोड स्निपेट एआरसी का उपयोग करता है।

संबंधित मुद्दे