पर मुझे लगता है कि यह एक बहुत ही सामान्य उपयोग है क्योंकि मैंने इसे कई ऐप्स में देखा है। लेकिन कुछ दिनों के खर्च के बाद, मैं अभी भी इसके साथ संघर्ष कर रहा हूं। मेरे पास निम्न की तरह एक संरचना है:लॉगआउट एक्शन
UITabBarController
-- UINavigationController1
---- UITableViewController1
-- UINavigationController2
---- UITableViewController2
अब मेरे पास UITableViewController2 पर एक लॉगआउट बटन है। जब मैं उस लॉगआउट बटन पर क्लिक करता हूं, तो मैं सभी और किसी भी व्यू कंट्रोलर को डिलीकेट किया जाना चाहता हूं, सभी अनलोड किए गए हैं। मूल रूप से ऐप लॉन्च करने की तरह ताजा शुरू करें। मैं मूल रूप से उन UITableViewController में से प्रत्येक पर viewDidLoad चाहता हूं जिसे फिर से बुलाया जाता है।
मैंने UITableViewController2 पर लॉगआउट कार्रवाई के दौरान मेरे एपडिलेगेट में निम्न विधि को कॉल करने का प्रयास किया।
-(void) logout {
for (UINavigationController* ctrl in self.tabBarController.viewControllers) {
[ctrl popToRootViewControllerAnimated:NO];
ctrl.visibleViewController.view = nil;
}
[self.tabBarController.view removeFromSuperview];
[self.window addSubview:self.tabBarController.view];
}
लेकिन अफसोस, यह काम करने के लिए प्रतीत नहीं होता?
कोई विचार कैसे ऐसी चीज को पूरा किया जाता है? इसके अलावा मैं दृश्य ViewController के साथ आईओएस 4 बनाम आईओएस 5 में विभिन्न व्यवहार देखता हूं। मैं यहां किसी भी मोडल व्यू कंट्रोलर का उपयोग नहीं कर रहा हूं। कोई गॉथस?
अद्यतन: मैं एआरसी उपयोग नहीं कर रहा
धन्यवाद MBH
मुझे यकीन नहीं है कि यह आपके मामले के लिए बिल्कुल काम करेगा, लेकिन मैं सिर्फ लॉगआउट पर 'popToRootViewController' करना चाहता था, जिस स्थिति में मुझे वास्तव में पसंद है [एडम केम्प का विचार] (http://forums.xamarin.com/discussion/3749/popviewcontroller-all-the-way-to-main-screen-of-app-rootviewcontroller), जो आपको सुझाव देता है कि आप 'UserDidLogOut' के लिए 'NSNotificationCenter' ईवेंट जोड़ें और उस ईवेंट को ** ** अपने व्यू कंट्रोलर के अंतर्गत संभाल लें। – cloudrave