iphone - नेविगेशन स्टैक से व्यू कंट्रोलर को हटा रहा है




ios uiviewcontroller (5)

मेरे पास 5 UIViewControllers कहने के साथ एक नेविगेशन ढेर है। मैं 5 वें व्यू कंट्रोलर में बटन के क्लिक पर स्टैक में तीसरे और चौथे व्यू कंट्रोलर को हटाना चाहता हूं। क्या इसे करना संभव है? यदि हां, तो कैसे?


आप पहले सरणी में सभी व्यू कंट्रोलर प्राप्त कर सकते हैं और उसके बाद संबंधित व्यू कंट्रोलर क्लास की जांच करने के बाद, आप जो चाहते हैं उसे हटा सकते हैं।

कोड का छोटा टुकड़ा यहां दिया गया है:

NSArray* tempVCA = [self.navigationController viewControllers];

for(UIViewController *tempVC in tempVCA)
{
    if([tempVC isKindOfClass:[urViewControllerClass class]])
    {
        [tempVC removeFromParentViewController];
    }
}

मुझे लगता है कि यह आपके काम को आसान बना देगा।


इस कोड का प्रयोग करें और आनंद लें:

NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: self.navigationController.viewControllers];

// [navigationArray removeAllObjects];    // This is just for remove all view controller from navigation stack.
[navigationArray removeObjectAtIndex: 2];  // You can pass your index here
self.navigationController.viewControllers = navigationArray;
[navigationArray release];

आशा है कि यह आपकी मदद करेगा।


इसे इस्तेमाल करो

if let navVCsCount = navigationController?.viewControllers.count {
    navigationController?.viewControllers.removeSubrange(Range(2..<navVCsCount - 1))
}

यह नेविगेशन नियंत्रक के ViewControllers का ख्याल रखेगा। ViewControllers और नेविगेशन बार में नेविगेशन में रखे गए हैं।

नोट: कम से कमDidAppear देखने के बाद इसे कॉल करना सुनिश्चित करें


यदि आप 5 वें व्यू कंट्रोलर (तीसरे और चौथे स्थान पर छोड़कर) से दूसरे व्यू कंट्रोलर पर जाने की कोशिश कर रहे हैं, तो आप [self.navigationController popToviewController:secondViewController] का उपयोग करना चाहेंगे।

आप नेविगेशन कंट्रोलर स्टैक से दूसरा secondViewController प्राप्त कर सकते हैं।

secondViewController =  [self.navigationController.viewControllers objectAtIndex:yourViewControllerIndex];

स्विफ्ट 3 और 4

self.navigationController!.viewControllers.removeAll()

self.navigationController?.viewControllers.remove(at: "insert here a number")

स्विफ्ट 2.1

सभी हटाएं:

self.navigationController!.viewControllers.removeAll()

सूचकांक पर हटा दें

self.navigationController?.viewControllers.removeAtIndex("insert here a number")

निकालें फर्स्ट, रेंज इत्यादि जैसे अधिक संभावित कार्यों का एक गुच्छा।





uinavigationcontroller