ios - [स्वयं। नेविगेशन नियंत्रक पुश ViewController: ngView एनिमेटेड: हाँ]; काम नहीं कर रहा




objective-c uinavigationcontroller (5)

अब इस कोड का उपयोग कर आईएम

 NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil];
 [UIView beginAnimations:nil context:NULL];
 [UIView setAnimationDuration: 0.50];
 [self presentViewController:ngView animated:NO completion:nil];

ताकि यह वही प्रभाव अन्य को दे सके

अगर मैं उपयोग करता हूँ

 NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil];
[self presentViewController:ngView animated:NO completion:nil];

उपरोक्त कोड नियंत्रक NGViewController पृष्ठ पर जाएंगे।

लेकिन अगर मैं इस नेविगेशन नियंत्रक का उपयोग करता हूँ

NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil];
[self.navigationController pushViewController:ngView animated:YES];

नियंत्रक एक ही पृष्ठ पर होगा।

क्या कोई यह बता सकता है कि समस्या क्या है


आपका self.navigationController शायद nil - इसे डीबगिंग के माध्यम से देखें। आपका self दृश्य नियंत्रक UINavigationController भीतर नहीं है


UINavigationController controller of controllers एक controller of controllers और इसे आप push and pop controllers को push and pop controllers और अपने दृश्य के एक पदानुक्रम का प्रबंधन करने की अनुमति देने के लिए डिज़ाइन किया गया है। और आपकी navigationController NGViewController संपत्ति आपको बताती है कि आपका NGViewController फिलहाल NGViewController UINavigationController's पदानुक्रम में है या नहीं; यदि नहीं (इस मामले में), navigationController nil संपत्ति nil


आपको अपना खुद का नेविगेशन नियंत्रक बनाना होगा और फिर दृश्य नियंत्रक को पुश करने का प्रयास करना चाहिए और इस तरह एक दृश्य पदानुक्रम को मजबूत करना होगा। मैं सामान्यतः यह सुझाव देता हूं:

 UINavigationController *navigationController = [[UINavigationController       alloc]initWithRootViewController:firstviewController];
[self.window setRootViewController:navigationController];
navigationController.delegate = self;
navigationController.navigationBarHidden = YES;

आपको इस कोड का उपयोग करना चाहिए

NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil];
[self presentViewController:ngView animated:NO completion:nil];

इस पंक्ति को लिखने के बाद जब आप पुश व्यू नियंत्रक के साथ अलग पृष्ठ पर जाना चाहते हैं

UINavigationController *navigationController = [[UINavigationController       alloc]initWithRootViewController:ngView];

[self.navigationController pushViewController:navigationController animated:YES];

मुझे आशा है कि आप इस समस्या को इस कोड के द्वारा सुलभ करेंगे शुभकामनाएँ





xcode4.6