यह सही तरीका नहीं है, init
को पहले से ही प्रारंभिक ऑब्जेक्ट पर शायद ही कभी (मुझे लगता है) पर कॉल करना है।
जिस तरह से मैंने इस समस्या को हल किया, वह UINavigationController का उप-वर्ग बनाना है।
इस उपवर्ग में, मैं ऊपर लिख initwithrootviewcontroller:
- (id) initWithRootViewController:(UIViewController *)rootViewController
{
UIViewController *fakeController = [[[UIViewController alloc] init] autorelease];
self = [super initWithRootViewController:fakeController];
if(self)
{
self.fakeRootViewController = fakeController;
rootViewController.navigationItem.hidesBackButton = YES;
[self pushViewController:rootViewController animated:NO];
}
return self;
}
fakeRootViewController वास्तव में कुछ नहीं करता है, यह आईओएस rootviewcontroller स्थापित करने के लिए एक संभावना नहीं होने के लिए एक समाधान है।
एक और समारोह में (setRootViewController: aViewController) आप नए 'rootviewcontroller' की backbutton छिपाने तो उपयोगकर्ता देखता है कभी नहीं एक नकली rootviewcontroller नहीं है। और फिर fakerootviewcontroller
poptorootviewcontroller यकीन है कि यह हमेशा ढेर के सूचकांक 1, नहीं सूचकांक 0.
को पॉप viewcontrollers की गेटर बदला जाना चाहिए, तो यह बिना एक सरणी देता है बनाने के लिए ओवरराइट किया जाना चाहिए ऊपर धक्का fakerootviewcontroller (removeobjectatindex: 0
)
उम्मीद है कि इससे मदद मिलती है!
धन्यवाद Costique बनाने की जरूरत है! यह काम कर रहा है। क्या आप कृपया बता सकते हैं कि setViewController कैसे काम करता है? –
दोनों विधियां नेविगेशन नियंत्रक के अंदर पूरे दृश्य नियंत्रक ढेर को प्रतिस्थापित करती हैं। "पुराने" नियंत्रक जारी हो जाते हैं। स्टैक सरणी रूट नियंत्रक के साथ शुरू होती है और इसका अंतिम तत्व शीर्षतम नियंत्रक है। – Costique
@ कोस्टिक मैं रूट कैसे सेट कर सकता हूं ... मान लीजिए मुझे रूट को 3 बार बदलना है, तो क्या यह विधियां कुशलता से काम करती हैं या नहीं? – Dalvik