नेविगेशन कंट्रोलर स्टैक, सबव्यू या मोडल कंट्रोलर्स का उपयोग किए बिना व्यू कंट्रोलर्स का चेतन परिवर्तन?


142

नैविगेशनकंट्रोलर्स के पास प्रबंधन और सीमित एनीमेशन बदलाव के लिए व्यूकंट्रोलर स्टैक हैं।

किसी मौजूदा दृश्य नियंत्रक के उप-दृश्य के रूप में एक दृश्य नियंत्रक को जोड़ने के लिए उप-दृश्य नियंत्रक को घटनाओं को पारित करने की आवश्यकता होती है, जिसे प्रबंधित करने के लिए एक दर्द होता है, थोड़ा झुंझलाहट के साथ लोड होता है और सामान्य रूप से लागू होने पर एक खराब हैक की तरह लगता है (Apple भी खिलाफ की सिफारिश करता है) यह कर रहा हूं)।

एक मोडल व्यू कंट्रोलर को पेश करने से एक व्यू कंट्रोलर फिर से दूसरे नंबर पर आता है, और जब इसमें ऊपर बताई गई ईवेंट पासिंग की समस्या नहीं होती है, तो यह व्यू कंट्रोलर को वास्तव में 'स्वैप' नहीं करता है, इसे स्टैक करता है।

स्टोरीबोर्ड आईओएस 5 तक सीमित हैं, और लगभग आदर्श हैं, लेकिन सभी परियोजनाओं में इसका उपयोग नहीं किया जा सकता है।

क्या कोई व्यक्ति उपरोक्त सीमाओं के बिना दृश्य नियंत्रकों को बदलने के लिए एक ठोस कोड उदाहरण प्रस्तुत कर सकता है और उनके बीच एनिमेटेड बदलाव की अनुमति देता है?

एक करीबी उदाहरण, लेकिन कोई एनीमेशन नहीं: नेविगेशन नियंत्रक के बिना कई आईओएस कस्टम व्यू नियंत्रक का उपयोग कैसे करें

संपादित करें: नव नियंत्रक का उपयोग ठीक है, लेकिन एनिमेटेड संक्रमण शैलियों (केवल स्लाइड प्रभाव नहीं) को देखने की आवश्यकता है जो दृश्य नियंत्रक दिखाया जा रहा है उसे पूरी तरह से स्वैप किया जाना चाहिए (स्टैक नहीं किया गया)। यदि दूसरे व्यू कंट्रोलर को स्टैक से दूसरे व्यू कंट्रोलर को निकालना होगा, तो यह पर्याप्त नहीं है।

संपादित करें 2: इस सवाल के लिए आईओएस 4 का आधार ओएस होना चाहिए, मुझे स्पष्ट करना चाहिए कि स्टोरीबोर्ड (ऊपर) का उल्लेख करते समय।


1
आप एक नेविगेशन नियंत्रक के साथ कस्टम एनीमेशन बदलाव कर सकते हैं। यदि यह स्वीकार्य होगा, तो कृपया उस बाधा को अपने प्रश्न से हटा दें और मैं एक कोड उदाहरण पोस्ट करूँगा।
रिचर्ड ब्राइटवेल

@ रिचर्ड अगर यह स्टैक के प्रबंधन की परेशानी को छोड़ देता है और व्यू कंट्रोलर्स के बीच अलग-अलग एनिमेटेड संक्रमण शैलियों को समायोजित करता है तो नेविगेशन कंट्रोलर का उपयोग ठीक है!
टाइगरकोडिंग

ठीक अच्छा। मैंने अधीर होकर कोड पोस्ट किया। कोशिश करो। मेरे लिये कार्य करता है।
रिचर्ड ब्राइटवेल

@RichardBrightwell आपने यहां कहा था कि कोई एक नेविगेशन कंट्रोलर का उपयोग करके व्यू कंट्रोलर के बीच कस्टम एनीमेशन संक्रमण कर सकता है ... कैसे? क्या आप एक उदाहरण पोस्ट कर सकते हैं? धन्यवाद।
बतख

जवाबों:


108

संपादित करें: नया उत्तर जो किसी भी अभिविन्यास में काम करता है। मूल उत्तर केवल तब काम करता है जब इंटरफ़ेस पोर्ट्रेट ओरिएंटेशन में होता है। यह b / c दृश्य संक्रमण एनिमेशन है जो दृश्य w / को अलग करता है, विंडो में जोड़े गए पहले दृश्य (जैसेwindow.rootViewController.view.anotherView)से कम से कम एक स्तर के दृश्य के साथ होना चाहिए।

मैंने एक साधारण कंटेनर क्लास लागू किया है जिसे मैंने बुलाया है TransitionController। आप इसे https://gist.github.com/1394947 पर देख सकते हैं ।

एक तरफ के रूप में, मैं एक अलग वर्ग बी / सी में कार्यान्वयन को प्राथमिकता देता हूं इसका पुन: उपयोग करना आसान है। यदि आप ऐसा नहीं चाहते हैं, तो आप बस TransitionControllerकक्षा के लिए आवश्यकता को समाप्त करते हुए सीधे अपने ऐप प्रतिनिधि में उसी तर्क को लागू कर सकते हैं । हालाँकि आपको जिस तर्क की आवश्यकता होगी, वही होगा।

इसे निम्नानुसार उपयोग करें:

अपने एप्लिकेशन प्रतिनिधि में

// add a property for the TransitionController

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    MyViewController *vc = [[MyViewContoller alloc] init...];
    self.transitionController = [[TransitionController alloc] initWithViewController:vc];
    self.window.rootViewController = self.transitionController;
    [self.window makeKeyAndVisible];
    return YES;
}

किसी भी दृश्य नियंत्रक से एक नए दृश्य नियंत्रक में संक्रमण करने के लिए

- (IBAction)flipToView
{
    anotherViewController *vc = [[AnotherViewController alloc] init...];
    MyAppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
    [appDelegate.transitionController transitionToViewController:vc withOptions:UIViewAnimationOptionTransitionFlipFromRight];
}

EDIT: मूल उत्तर नीचे दिया गया है - केवल पोर्टेट ओरिएंटेशन के लिए काम करता है

मैंने इस उदाहरण के लिए निम्नलिखित धारणाएँ बनाई हैं:

  1. आपके पास एक दृश्य नियंत्रक के रूप में निर्दिष्ट है rootViewController अपनी विंडो के

  2. जब आप एक नए दृश्य पर स्विच करते हैं, तो आप वर्तमान दृश्य को बदलने की इच्छा रखते हैं, नए दृश्य के स्वामित्व वाले दृश्य नियंत्रक के साथ। किसी भी समय, केवल वर्तमान दृश्य नियंत्रक जीवित है (उदाहरण के लिए आबंटित)।

कोड को आसानी से अलग तरीके से काम करने के लिए संशोधित किया जा सकता है, मुख्य बिंदु एनिमेटेड संक्रमण और एकल दृश्य नियंत्रक है। सुनिश्चित करें कि आप इसे निर्दिष्ट करने के बाहर कहीं भी एक दृश्य नियंत्रक नहीं रखते हैंwindow.rootViewController

एप्लिकेशन प्रतिनिधि में संक्रमण को चेतन करने के लिए कोड

- (void)transitionToViewController:(UIViewController *)viewController
                    withTransition:(UIViewAnimationOptions)transition
{
    [UIView transitionFromView:self.window.rootViewController.view
                        toView:viewController.view
                      duration:0.65f
                       options:transition
                    completion:^(BOOL finished){
                        self.window.rootViewController = viewController;
                    }];
}

एक दृश्य नियंत्रक में उदाहरण का उपयोग करें

- (IBAction)flipToNextView
{
    AnotherViewController *anotherVC = [[AnotherVC alloc] init...];
    MyAppDelegate *appDelegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate;
    [appDelegate transitionToViewController:anotherVC
                             withTransition:UIViewAnimationOptionTransitionFlipFromRight];
}

1
हाँ बहुत अच्छा! न केवल यह चाल करता है, लेकिन यह एक बहुत ही सरल और साफ कोड उदाहरण है। बहुत धन्यवाद!
टाइगरकोडिंग

क्या आपके लिए परिदृश्य में समस्याएँ नहीं हैं? इसके अलावा: क्या यह व्यूअनियर और व्हॉट्सएप के तरीकों को ट्रिगर करता है?
फेलिक्स लामौरौक्स

1
मुझे पता है कि प्रदर्शित कॉल इसलिए किए जा रहे हैं क्योंकि मैंने उन्हें लॉग इन किया था। मैं यह भी नहीं देखता कि यह अभिविन्यास परिवर्तनों को क्यों प्रभावित करेगा। क्या आप सोच सकते हैं कि आपको ऐसा क्यों लगता है?
टाइगरकोडिंग

1
@XJones महान समाधान, मेरे आईपैड ऐप में बहुत अच्छी तरह से काम करता है सिवाय एक मुद्दे के जिसका मैं सामना कर रहा हूं, पहला आरंभीकरण transVC के बाद = [TransitionController ... initWithViewController: aUINavCtrlObj]; window.rootVC = transVC; aUINavCtrlObj में दृश्य शीर्ष से 20px गद्देदार है (यानी नीचे 20 px सभी ओरिएंटेशन में स्क्रीन (UIWindow) सीमा से बाहर हैं), लेकिन जब मैं करता हूँ [transVC ट्रांस्फ़ॉर्मेशन। मैं चाहता था किFullScreenLayout = TransitionController के लोड व्यू में NO, यह क्या करता है यह स्टेटसबार के तहत 20 px ब्लैक एरिया जोड़ता है।
अब्दुलियम रहमानियस

1
@AbduliamRehmanius: मुझे भी यही समस्या थी। मैंने इसे 25 की लाइन बदलकर ठीक TransitionController.mकिया UIView *view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];, लेकिन मैंने इसे केवल iOS के सबसे नए संस्करण पर उपयोग किया है, इसलिए सावधानीपूर्वक परीक्षण करें।
फिल केल्विन

67

आप Apple के नए व्यू कंट्रोलर कंटोलमेंट सिस्टम का उपयोग कर सकते हैं। अधिक जानकारी के लिए WWDC 2011 सत्र वीडियो "कार्यान्वयन UIViewControllerकंटेनर" की जाँच करें।

IOS5 में नया, UIViewControllerकन्टैंट आपको एक पेरेंट व्यू कॉन्ट्रोलर और कई सारे चाइल्ड व्यू कॉन्ट्रोलर रखने की अनुमति देता है जो इसके भीतर समाहित हैं। यह कैसे UISplitViewController काम करता है। ऐसा करने से आप एक अभिभावक में दृश्य नियंत्रकों को ढेर कर सकते हैं, लेकिन अपने विशेष एप्लिकेशन के लिए आप केवल एक दृश्यमान दृश्य नियंत्रक से दूसरे में संक्रमण का प्रबंधन करने के लिए माता-पिता का उपयोग कर रहे हैं। यह Apple चीजों को करने का स्वीकृत तरीका है और एक बच्चे के दृष्टिकोण से एनिमेट करने वाला दर्द रहित है। इसके अलावा आप सभी विभिन्न विभिन्न UIViewAnimationOptionसंक्रमणों का उपयोग करते हैं !

इसके अलावा, UIViewContain के साथ, आपको तब तक चिंता करने की ज़रूरत नहीं है, जब तक कि आप नहीं चाहते हैं, ओरिएंटेशन इवेंट्स के दौरान चाइल्ड व्यू कॉन्ट्रोलर्स को मैनेज करने की गड़बड़ी के बारे में। आप यह सुनिश्चित करने के लिए कि बच्चे को देखने के लिए अपने पेरेंटव्यूकंट्रोलर फॉरवर्ड रोटेशन इवेंट्स को बनाने के लिए आप बस निम्नलिखित का उपयोग कर सकते हैं।

- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers{
    return YES;
}

आप अपने चाइल्डव्यूकंट्रोलर को सेटअप करने के लिए अपने माता-पिता के दृष्टिकोण में निम्नलिखित या समान कार्य कर सकते हैं:

[self addChildViewController:self.currentViewController];
[self.view addSubview:self.currentViewController.view];
[self.currentViewController didMoveToParentViewController:self];
[self.currentViewController.swapViewControllerButton setTitle:@"Swap" forState:UIControlStateNormal];

फिर जब आपको चाइल्ड व्यू कंट्रोलर को बदलने की आवश्यकता होती है, तो आप पेरेंट व्यू कॉन्ट्रोलर के भीतर निम्नलिखित की तर्ज पर कुछ कहते हैं:

-(void)swapViewControllers:(childViewController *)addChildViewController:aNewViewController{
     [self addChildViewController:aNewViewController];
     __weak __block ViewController *weakSelf=self;
     [self transitionFromViewController:self.currentViewController
                       toViewController:aNewViewController
                               duration:1.0
                                options:UIViewAnimationOptionTransitionCurlUp
                             animations:nil
                             completion:^(BOOL finished) {
                                   [aNewViewController didMoveToParentViewController:weakSelf];

                                   [weakSelf.currentViewController willMoveToParentViewController:nil];
                                   [weakSelf.currentViewController removeFromParentViewController];

                                   weakSelf.currentViewController=[aNewViewController autorelease];
                             }];
 }

मैंने यहां एक पूर्ण उदाहरण परियोजना पोस्ट की: https://github.com/toolmanGitHub/stackedViewControllers । यह अन्य परियोजना दिखाती है कि UIViewControllerकुछ विभिन्न इनपुट व्यूकंट्रोलर प्रकारों पर कन्टेनमेंट का उपयोग कैसे करें जो पूरी स्क्रीन को नहीं लेते हैं। सौभाग्य


1
एक बेहतरीन उदाहरण। कोड पोस्ट करने के लिए समय निकालने के लिए धन्यवाद। दूसरी ओर, यह केवल iOS 5 तक ही सीमित है। जैसा कि प्रश्न में उल्लेख किया गया है: "[स्टोरीबोर्ड] आईओएस 5 तक सीमित हैं, और लगभग आदर्श हैं, लेकिन सभी परियोजनाओं में उपयोग नहीं किया जा सकता है।" एक बड़े प्रतिशत (लगभग 40%?) को ध्यान में रखते हुए, ग्राहक अभी भी iOS 4 का उपयोग करते हैं, लक्ष्य कुछ ऐसा प्रदान करना है जो iOS 4 और अधिक में काम करता है।
टाइगरकोडिंग

क्या आपको [self.currentViewController willMoveToParentViewController:nil];संक्रमण से पहले फोन नहीं करना चाहिए ?
फेलिक्स लामोरौक्स

@FelixLam - UIViewController कंटेंट पर डॉक्स के अनुसार, आप willMoveToParentViewController को तभी कॉल करेंगे जब आप ऐड-चाइल्डव्यूकंट्रोलर विधि को ओवरराइड करेंगे। इस उदाहरण में मैं इसे कॉल कर रहा हूं लेकिन ओवरराइडिंग नहीं।
तिमिथुलेमन

2
WWDC में डेमो में मुझे याद है कि उन्होंने संक्रमण शुरू करने से पहले फोन किया था, क्योंकि संक्रमण का मतलब यह नहीं है कि currentVC शून्य हो जाएगा। UITabBarController के मामले में संक्रमण किसी भी vc के माता-पिता को नहीं बदलेगा। माता-पिता से हटाने के लिए didMoveToParentViewController: nil कहते हैं, लेकिन कोई वसीयत नहीं है ... कॉल। IMHO
फेलिक्स लामोरौक्स

7

ठीक है, मुझे पता है कि सवाल एक नेविगेशन नियंत्रक का उपयोग किए बिना कहता है, लेकिन कोई कारण नहीं। ओपी मुझे सोने जाने के लिए समय में टिप्पणियों का जवाब नहीं दे रहा था। मुझे मत छोड़ो। :)

वर्तमान दृश्य नियंत्रक को पॉप करने और नेविगेशन नियंत्रक का उपयोग करके एक नए दृश्य नियंत्रक पर फ्लिप करने का तरीका यहां दिया गया है:

UINavigationController *myNavigationController = self.navigationController;
[[self retain] autorelease];

[myNavigationController popViewControllerAnimated:NO];

PreferencesViewController *controller = [[PreferencesViewController alloc] initWithNibName:nil bundle:nil];

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration: 0.65];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:myNavigationController.view cache:YES];
[myNavigationController pushViewController:controller animated:NO];
[UIView commitAnimations];

[controller release];

क्या यह स्टैक व्यू कंट्रोलर नहीं है?
टाइगरकोडिंग

1
हां, क्योंकि हम एक नेविगेशन नियंत्रक का उपयोग कर रहे हैं। हालाँकि, यह सीमा के आसपास हो जाता है कि आप किस प्रकार के संक्रमण कर सकते हैं, जो मुझे लगा कि आपके प्रश्न का मूल है।
रिचर्ड ब्राइटवेल

बंद करें, लेकिन बड़ी समस्याओं में से एक स्टैक पर प्रबंधित करने के लिए कई दृश्य नियंत्रक हैं। मैं पूरी तरह से दृश्य नियंत्रकों को बदलने के लिए शिकार कर रहा हूं। =)
टाइगरकोडिंग 3

आह। मेरे पास भी कुछ ऐसा हो सकता है ... मुझे एक मिनट दे दो। यदि नहीं, तो मैं इस उत्तर को हटा दूंगा।
रिचर्ड ब्राइटवेल

ठीक है, मैंने कोड के दो अलग-अलग बिट्स को एक साथ सिल दिया। मुझे लगता है कि यह वही करेगा जो आप चाहते हैं।
रिचर्ड ब्राइटवेल

3

चूंकि मैं अभी इस सटीक समस्या के पार हुआ था, और सीमित सफलता के लिए सभी पूर्व-मौजूदा उत्तरों पर बदलाव की कोशिश की, मैं पोस्ट करूँगा कि मैंने आखिर इसे कैसे हल किया:

जैसा कि कस्टम सेगमेंट में इस पोस्ट में बताया गया है , वास्तव में कस्टम सेगमेंट बनाना बहुत आसान है। वे इंटरफ़ेस बिल्डर में हुक अप करने के लिए भी सुपर आसान हैं, वे आईबी में रिश्तों को दिखाई देते हैं, और उन्हें सेग के स्रोत / गंतव्य दृश्य नियंत्रकों द्वारा बहुत अधिक समर्थन की आवश्यकता नहीं है।

ऊपर दी गई पोस्ट iOS 4 कोड को प्रदान करता है कि वर्तमान टॉप व्यू कंट्रोलर को नेविगेशन-कन्ट्रोलर स्टैक पर बदलने के लिए स्लाइड-इन-द-टॉप एनीमेशन का उपयोग करके एक नया के साथ।

मेरे मामले में, मैं चाहता था कि ऐसा ही एक प्रतिरूप हो, लेकिन एक FlipFromLeftपरिवर्तन के साथ । मुझे भी केवल iOS 5+ के लिए समर्थन की आवश्यकता थी। कोड:

RAFlipReplaceSegue.h से:

#import <UIKit/UIKit.h>

@interface RAFlipReplaceSegue : UIStoryboardSegue
@end

RAFlipReplaceSegue.m से:

#import "RAFlipReplaceSegue.h"

@implementation RAFlipReplaceSegue

-(void) perform
{
    UIViewController *destVC = self.destinationViewController;
    UIViewController *sourceVC = self.sourceViewController;
    [destVC viewWillAppear:YES];

    destVC.view.frame = sourceVC.view.frame;

    [UIView transitionFromView:sourceVC.view
                        toView:destVC.view
                      duration:0.7
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    completion:^(BOOL finished)
                    {
                        [destVC viewDidAppear:YES];

                        UINavigationController *nav = sourceVC.navigationController;
                        [nav popViewControllerAnimated:NO];
                        [nav pushViewController:destVC animated:NO];
                    }
     ];
}

@end

अब, किसी अन्य प्रकार की बहस को सेट करने के लिए कंट्रोल-ड्रैग करें, फिर इसे एक कस्टम सेग करें, और कस्टम सेग क्लास के नाम से टाइप करें, et voilà!


स्टोरीबोर्ड के बिना इस कार्यक्रम के लिए एक रास्ता है?
जकडांस

जहां तक ​​मुझे पता है, एक सेग का उपयोग करने के लिए आपको इसे परिभाषित करना होगा और इसे स्टोरीबोर्ड में एक पहचानकर्ता देना होगा। आप UIViewController की –performSegueWithIdentifier:sender:विधि के साथ कोड में एक सेग को आमंत्रित कर सकते हैं ।
रयान आर्टकोना

1
आपको कभी भी viewDidXXX और viewWillXXX को सीधे कॉल नहीं करना चाहिए।
बेन सिनक्लेयर

2

मैं लंबे समय तक इससे जूझता रहा, और मेरा एक मुद्दा सूचीबद्ध है यहां है , मुझे यकीन नहीं है कि आपको यह समस्या है। लेकिन यहाँ है कि मैं क्या सिफारिश करेंगे अगर यह iOS 4 के साथ काम करना चाहिए।

सबसे पहले, एक नया NavigationControllerवर्ग बनाएं । यह वह जगह है जहां हम सभी गंदे काम करेंगे - अन्य वर्ग जैसे pushViewController:और इस तरह की कॉल आवृत्ति तरीकों को "सफाई" करने में सक्षम होंगे । अपने में.h :

@interface NavigationController : UIViewController {
    NSMutableArray *childViewControllers;
    UIViewController *currentViewController;
}

- (void)transitionFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController duration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL))completion;
- (void)addChildViewController:(UIViewController *)childController;
- (void)removeChildViewController:(UIViewController *)childController;

चाइल्ड व्यू कंट्रोलर्स एरे हमारे स्टैक में सभी व्यू कंट्रोलर्स के लिए एक स्टोर के रूप में काम करेगा। हम स्वचालित रूप से सभी रोटेशन और कोड से आकार को अग्रेषित करेंगेNavigationController दृश्यcurrentController

अब, हमारे कार्यान्वयन में:

- (void)transitionFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController duration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL))completion
{
    currentViewController = [toViewController retain];
    // Put any auto- and manual-resizing handling code here

    [UIView animateWithDuration:duration animations:animations completion:completion];

    [fromViewController.view removeFromSuperview];
}

- (void)addChildViewController:(UIViewController *)childController {
    [childViewControllers addObject:childController];
}

- (void)removeChildViewController:(UIViewController *)childController {
    [childViewControllers removeObject:childController];
}

अब आप अपने स्वयं के रिवाज को लागू कर सकते हैं pushViewController: , popViewControllerऔर इस तरह, इन विधि कॉलों का उपयोग कर सकते हैं।

गुड लक और मुझे उम्मीद है इससे मदद मिलेगी!


फिर से हमें मौजूदा दृश्य नियंत्रकों के उप-विचारों के रूप में दृश्य नियंत्रकों को जोड़ने का सहारा लेना चाहिए। दी, यह वही है जो मौजूदा नेविगेशन नियंत्रक करता है, लेकिन इसका मतलब है कि हमें मूल रूप से इसे फिर से लिखना होगा और यह सभी तरीके हैं। वास्तव में, हमें viewWillAppear और इसी तरह के तरीकों को वितरित करने से बचना चाहिए। मुझे लगता है कि ऐसा करने का कोई साफ तरीका नहीं है। हालाँकि, मैं आपको समय और प्रयास देने के लिए धन्यवाद देता हूँ!
टाइगरकोडिंग 14

मुझे लगता है कि जरूरत के अनुसार व्यू कंट्रोलरों को जोड़ने और हटाने की इस प्रणाली के साथ, यह समाधान आपको उन तरीकों को आगे बढ़ाने से रोकता है।
अप्सफान

क्या आपको यकीन है? मैं पहले भी इसी तरह से व्यू कंट्रोलर्स को स्वैप करता था और मुझे हमेशा मैसेज फॉरवर्ड करने पड़ते थे। क्या आप इसकी पुष्टि कर सकते हैं?
टाइगरकोडिंग 16

नहीं, मैं यकीन नहीं है, लेकिन मुझे लगता है कि ग्रहण करेंगे, जब तक कि आप के रूप में वे गायब हो जाते हैं दृश्य नियंत्रकों के विचारों को निकालते हैं, और उन्हें जोड़ने के रूप में वे दिखाई देते हैं, कि ऐसा करना चाहिए स्वचालित रूप से ट्रिगर viewWillAppear, viewDidAppearऔर इस तरह के।
एनपीएस

-1
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *viewController = (UINavigationController *)[storyboard instantiateViewControllerWithIdentifier:@"storyBoardIdentifier"];
viewController.modalTransitionStyle = UIModalTransitionStylePartialCurl;
[self presentViewController:viewController animated:YES completion:nil];

इस कोड का प्रयास करें।


यह कोड एक व्यू कंट्रोलर से दूसरे व्यू कंट्रोलर के लिए ट्रांज़िशन देता है जिसमें नेविगेशन कंट्रोलर होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.