मैंने अभी आईओएस प्रोग्रामिंग शुरू कर दिया है और अब तक यहां मिले ट्यूटोरियल और उत्तरों को आगे बढ़ने में बहुत मदद मिली है। हालांकि, यह विशेष समस्या मुझे पूरी रात बुझ रही है और मुझे कोई जवाब नहीं मिल रहा है कि "सही लगता है"।एप्लिकेशन स्टार्टअप पर स्टोरी बोर्ड से वैकल्पिक प्रथम दृश्य नियंत्रक का चयन
मैं एक ऐसा एप्लिकेशन लिख रहा हूं जो रिमोट सेवा से जुड़ता है और उपयोगकर्ताओं को इसका उपयोग करने से पहले साइन इन करने की आवश्यकता होती है। जब वे एप्लिकेशन का उपयोग शुरू करते हैं, तो उनका पहला दृश्य साइन इन संवाद होना चाहिए; जब उन्होंने पहले प्रमाणित किया है, तो वे तुरंत अवलोकन पृष्ठ देखते हैं।
प्रोजेक्ट स्टोरी बोर्ड का उपयोग करता है - जो मुझे लगता है कि एक महान सुविधा है - इसलिए रूट कोड नियंत्रक का चयन और लोड करने वाला अधिकांश कोड पहले से ही ख्याल रखता है। मैं सबसे अच्छी जगह सोचा जोड़ने के लिए मेरी तर्क AppDelegate
की application:didFinishLaunchingWithOptions:
विधि है:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions
{
// select my root view controller here based on credentials present or not
return YES;
}
लेकिन यह दो सवाल लाया:
इस विशेष प्रतिनिधि विधि के अंदर, रूट दृश्य नियंत्रक पहले से ही है कहानी बोर्ड के आधार पर चुना गया (और लोड किया गया?) क्या मैं लोडिंग प्रक्रिया में पहले दृश्य नियंत्रक चयन को ओवरराइड करने के लिए पहले की जगह पर जा सकता हूं या क्या यह अनिवार्य रूप से जटिलताओं को जटिल करेगा?
पहले दृश्य नियंत्रक को ओवरराइड करने के लिए मुझे कहानी बोर्ड के संदर्भ की आवश्यकता है, लेकिन मुझे के
storyboardWithName:bundle:
कन्स्ट्रक्टर का उपयोग करने से बेहतर तरीका नहीं मिला। यह गलत लगता है, एप्लिकेशन के पास पहले से ही कहानी बोर्ड का संदर्भ होना चाहिए, लेकिन मैं इसे कैसे एक्सेस कर सकता हूं?
अद्यतन
मैं दूसरे अंक मैं हो रही थी बाहर काम किया, जैसा कि मैंने पाया मेरी यहाँ जवाब:
UIStoryboard: What's the Correct Way to Get the Active Storyboard?
NSBundle *bundle = [NSBundle mainBundle];
NSString *sbFile = [bundle objectForInfoDictionaryKey:@"UIMainStoryboardFile"];
UIStoryboard *sb = [UIStoryboard storyboardWithName:sbFile bundle:bundle];
ऊपर एक नई कहानी पैदा करेगा बोर्ड उदाहरण; सक्रिय उदाहरण प्राप्त करने के लिए, यह एक बहुत आसान है:
UIStoryboard *sb = [[self.window rootViewController] storyboard];
कहानी बोर्ड फ़ाइल स्वयं आप दृश्य आपको लोड करने के लिए, उदाहरण के लिए इच्छा के लिए एक पहचानकर्ता सेट करने के लिए में LoginDialog
।
LoginViewController *login = [sb instantiateViewControllerWithIdentifier:@"LoginDialog"];
[self.window setRootViewController:login];
अन्य दृश्य नियंत्रक में, निम्न suffices:
UIStoryboard *sb = self.storyboard;
LoginViewController *login = [sb instantiateViewControllerWithIdentifier:@"LoginDialog"];
[self presentViewController:login animated:NO completion:nil];
'/ * पर स्टोरीबोर्ड के लिए काम कर रहा है ... */self.window.rootViewController = (YourViewController *) [[UIStoryboard storyboardWithName: @" Main " बंडल: nil] instantiateViewControllerWithIdentifier: @ "YourViewControllerID"]; ' –