2012-01-27 15 views
7

मेरे पास स्टोरीबोर्ड का उपयोग करके विकसित आईओएस 5 ऐप है जो वर्तमान में प्रारंभिक लॉन्च पर टैब बार नियंत्रक दृश्य प्रदर्शित करता है। टैब बार नियंत्रक प्रदर्शित होने से पहले मैं एक लॉगिन स्क्रीन प्रदर्शित करना चाहता हूं। उपयोगकर्ता अपना उपयोगकर्ता नाम & पासवर्ड दर्ज करेगा, फिर सिस्टम उपयोगकर्ता को प्रमाणीकृत करेगा और फिर सफल होने पर, टैब बार नियंत्रक प्रदर्शित करेगा।टैब बार नियंत्रक से पहले एक लॉगिन दृश्य लॉन्च करना

मैंने भाग्य के साथ निम्नलिखित 3 विकल्पों का प्रयास किया है .. कोई विचार?

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    // Option 1 
    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 
    PointsViewController *firstVC = [[tabBarController viewControllers] objectAtIndex:0]; 
    UIViewController *loginViewController = [[LoginViewController alloc] init]; 
    [firstVC.navigationController pushViewController:loginViewController animated:YES]; 

    // Option 2 
    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 
    UIViewController *loginViewController = [[LoginViewController alloc] init]; 
    [tabBarController presentViewController:loginViewController animated:NO completion:nil]; 

    // Option 3 
    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 
    UIViewController *loginViewController = [[LoginViewController alloc] init]; 
    [tabBarController presentModalViewController:loginViewController animated:NO]; 

    return YES; 
} 

उत्तर

18

अंत में यह एक पता लगा .. यहाँ आप क्या करने की जरूरत है:

  1. स्टोरीबोर्ड के लिए एक स्टैंडअलोन लॉगिन दृश्य जोड़ें।

  2. लॉगिन दृश्य का चयन करें और विशेषता निरीक्षक में, 'प्रारंभिक दृश्य नियंत्रक' देखें। यह टैब कंट्रोलर से लॉन्च व्यू में लॉन्च होने वाला प्रारंभिक दृश्य स्विच करेगा, जिससे पहले लॉगिन स्क्रीन प्रदर्शित करने के पूरे मुद्दे को हल किया जा सकेगा।

  3. लॉगिन दृश्य में एक बटन जोड़ें और बटन के पुश पर टैब नियंत्रक लोड करने के लिए एक सेग्यू बनाएं। (या आप लॉग इन व्यू से टैब नियंत्रक दृश्य में एक सेगू बना सकते हैं और प्रोग्रामेटिक रूप से आवश्यक रूप से segue को आवेदक लगा सकते हैं)।

  4. लॉगिन दृश्य चुनकर विकल्प संपादक चुनें> एम्बेड में> नेविगेशन नियंत्रक

  5. नेविगेशन नियंत्रक के लिए गुण निरीक्षक में, अनचेक 'शो नेविगेशन बार' विकल्प (यह एक कॉस्मेटिक बदलाव है, मैं कर रहा हूँ आप यह सोचते हैं लॉगिन स्क्रीन पर दिखा एक नेविगेशन पट्टी की जरूरत नहीं है !!)

है कि यह :)

+0

मैं segue का उपयोग कर टैब बार के पहलेदृश्य नियंत्रक को मूल्य कैसे पास करूं? मैं इसे – meda

+0

पर काम नहीं कर सका, आप segue के साथ कोई मान नहीं पारित करते हैं। एक संभावित विकल्प वह मूल्य संग्रहीत करना है जिसे आप अपने ऐपडिलेगेट पर एक संपत्ति के रूप में पास करना चाहते हैं और केवल लक्ष्य दृश्य से मूल्य तक पहुंच सकते हैं। –

+0

यह काम करता है! लेकिन अगर पासवर्ड गलत है तो नई विंडो पर पुश को कैसे अक्षम करें? – Gank

0

आप एक मॉडल दृश्य का उपयोग कर सकते हैं। आप जांच सकते हैं कि उपयोगकर्ता लॉग इन है या नहीं। यदि नहीं, तो आप लॉगिन जानकारी प्राप्त करने के लिए एक मोडल व्यू का उपयोग कर सकते हैं। आप स्टोरीबोर्ड में एक UIViewController बना सकते हैं और फिर eventiateViewControllerWithIdentifier का उपयोग कर सकते हैं: स्टोरीबोर्ड से लॉगिन स्क्रीन बनाने के लिए विधि। फिर बस इसे सामान्य रूप से दिखाएं।

+0

और आप मोडल विंडो कहां से लॉन्च करेंगे? पहले टैब का viewDidAppear विधि? टैब लोड होने से पहले मोडल विंडो लॉन्च करने का कोई तरीका है? –

+0

यदि आप चीजों को प्रस्तुत करने से पहले इसे प्रदर्शित करना चाहते हैं, तो आप चेक करने और मोडल व्यू लॉन्च करने के लिए viewWillAppear का उपयोग करेंगे। एक बार जब आप एक नया व्यू कंट्रोलर मॉड्यूल खोलते हैं/प्रसंस्करण देखते हैं तो मोडल व्यू बंद होने तक प्रतीक्षा की जाती है। विधि टैब नियंत्रक के मूल दृश्य नियंत्रक में होगी और टैब नियंत्रक नहीं। यदि आवश्यक हो तो इसे आपके टैब नियंत्रण के रूट व्यू नियंत्रकों में से प्रत्येक में रखा जा सकता है या आप UIViewControl को उपclass कर सकते हैं और प्रत्येक के लिए इसका उपयोग कर सकते हैं। – Rob

+1

मैंने कोशिश की। जो मैं देख रहा हूं वह यह है कि प्रारंभिक टैब लोड हो जाता है और फिर इसके ऊपर मोडल विंडो ओवरलैड होती है। दृष्टि से यह प्रसन्न नहीं है। मैं चाहता हूं कि उपयोगकर्ता पहले लॉगिन विंडो देखें। मेरे पास पहले टैब पर viewWillAppear विधि से किए गए लॉगिन दृश्य का लॉन्च है। यहां मेरा कोड कैसा दिखता है।

 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // Display the login view modally [self performSegueWithIdentifier:@"ShowLogin" sender:self]; }

0

मैं बस अब इस समस्या से मुलाकात की और मैं पूरी तरह से निम्नलिखित कोड है, जो आप भी उपयोग नहीं किया जोड़कर इस समाधान कर लिया है।

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    ... 
    [self.window makeKeyAndVisible]; 
}