कहीं से भी एक दृश्य नियंत्रक दिखाने के लिए (ऐप प्रतिनिधि सहित), मैंने आईओएस 8+ में सफलता के साथ इस कोड का उपयोग किया है (मुझे पहले संगतता के बारे में निश्चित नहीं है)। यदि कोई है तो यह मोडल व्यू से पेश होगा।
YOURAppDelegate *appDelegate = (YOURAppDelegate *)[[UIApplication sharedApplication] delegate];
UINavigationController *rootNavC = (UINavigationController *)appDelegate.window.rootViewController;
UIViewController *topVC = rootNavC.topViewController;
UIViewController *myNewVC = [rootNavC.storyboard instantiateViewControllerWithIdentifier:<YOUR STORYBOARD ID>];
if (topVC.presentedViewController)
{
if ([topVC.presentedViewController class] == [UINavigationController class])
{
dispatch_async(dispatch_get_main_queue(), ^{
[((UINavigationController*)topVC.presentedViewController) pushViewController:myNewVC
animated:YES];
});
}
else
{
dispatch_async(dispatch_get_main_queue(), ^{
[topVC.presentedViewController.navigationController pushViewController:myNewVC
animated:animated];
});
}
}
else
{
dispatch_async(dispatch_get_main_queue(), ^{
[rootNavC pushViewController:myNewVC
animated:animated];
});
}
मैं आमतौर पर इसे एक सुविधाजनक विधि में लपेटता हूं और अपने तत्काल दृश्य नियंत्रक में पास करता हूं। ओपी के लिए - आप स्टोरीबोर्ड में साइनइन व्यू कंट्रोलर बनाएंगे, इसे एक अद्वितीय स्टोरीबोर्ड आईडी असाइन करें, और उसके बाद उपरोक्त कोड में उस आईडी को प्रतिस्थापित करें।
स्रोत
2016-02-08 19:31:22
'currentVC' क्या है? – Andreas
इसका मतलब है कि "वर्तमान" के स्थान पर कीवर्ड "स्वयं" का उपयोग करके वर्तमान में आप किस व्यू कंट्रोलर में काम कर रहे हैं, संदर्भित करते हैं। –
लेकिन उन्होंने किसी भी व्यू कंट्रोलर में "पहले" ऐप डिलीगेट से पेश करने के बारे में पूछा, मैं शर्त लगाता हूं कि – Zerho