मेरे पास काम करने वाले लॉगिन और मुख्य दृश्य नियंत्रक के साथ स्थापित एक स्टोरीबोर्ड है, बाद वाला व्यू कंट्रोलर है जिसमें लॉगिन सफल होने पर उपयोगकर्ता को नेविगेट किया जाता है। मेरा उद्देश्य मुख्य दृश्य नियंत्रक को तुरंत दिखाना है अगर प्रमाणीकरण (कीचेन में संग्रहीत) सफल है, और प्रमाणीकरण विफल होने पर लॉगिन दृश्य नियंत्रक दिखा। मूल रूप से, मैं अपने AppDelegate में यह करना चाहता हूं:
// url request & response work fine, assume success is a BOOL here
// that indicates whether login was successful or not
if (success) {
// 'push' main view controller
} else {
// 'push' login view controller
}
मैं विधि PerformSegueWithIdentifier के बारे में जानता हूं: लेकिन यह विधि UIViewController की एक उदाहरण विधि है, इसलिए AppDelegate के भीतर से कॉल करने योग्य नहीं है। मैं अपने मौजूदा स्टोरीबोर्ड का उपयोग कैसे करूँ ??
संपादित करें:
स्टोरीबोर्ड का प्रारंभिक दृश्य नियंत्रक अब एक नेविगेशन नियंत्रक है जो किसी भी चीज़ से जुड़ा नहीं है। मैंने setRootViewController का उपयोग किया: भेद क्योंकि MainIdentifier एक UITabBarController है। तो फिर यह मेरी लाइनें कैसी दिखती हैं:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
BOOL isLoggedIn = ...; // got from server response
NSString *segueId = isLoggedIn ? @"MainIdentifier" : @"LoginIdentifier";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
UIViewController *initViewController = [storyboard instantiateViewControllerWithIdentifier:segueId];
if (isLoggedIn) {
[self.window setRootViewController:initViewController];
} else {
[(UINavigationController *)self.window.rootViewController pushViewController:initViewController animated:NO];
}
return YES;
}
सुझाव / सुधार का स्वागत है!