2015-02-07 8 views
5

में टैबबार आइटम को निकालें, मैं वर्तमान में ऐप को टैबबार आइटम चलाने के दौरान निकालने का तरीका ढूंढने का प्रयास करता हूं, मुझे इसे सक्षम या अक्षम करने का तरीका मिला लेकिन इसे हटाने के लिए नहीं।

अक्षम यह के लिए मुझे क्या:स्विफ्ट

enter image description here

viewDidLoad में

if let tabBarItem = self.tabBarController?.tabBar.items?[3] as? UITabBarItem { 
      tabBarItem.enabled = false 
} 

यह अच्छी तरह से काम करता है, लेकिन अभी भी उपयोगकर्ता TabBar आइटम देख सकते हैं और मैं करूँगा बस पूरा इसे हटाने, है वहाँ एक रास्ता?

मैं टैब्स के माध्यम से TabBarItem को ट्रिगर करना चाहता हूं, अगर मैं पार्स डेटा को सत्य में सेट करता हूं तो इसे अन्य तरीकों से दिखाना चाहिए।

उत्तर

15

आप अपने tabBarController की संपत्ति को एक सरणी के साथ सेट करना चाहते हैं जहां आपने विशेष दृश्य नियंत्रक को छोड़ दिया है जिसे आप अब नहीं चाहते हैं।

if let tabBarController = self.tabBarController { 
    let indexToRemove = 3 
    if indexToRemove < tabBarController.viewControllers?.count { 
     var viewControllers = tabBarController.viewControllers 
     viewControllers?.remove(at: indexToRemove) 
     tabBarController.viewControllers = viewControllers 
    } 
} 
+0

क्या आप जानते हैं कि इसे हटाने के बाद इसे वापस कैसे प्राप्त किया जाए? – Adam

+0

मुझे पता है कि यह अब काफी पुराना है, लेकिन 'आप इसे वापस कैसे प्राप्त करते हैं?' के बारे में - मूल का संदर्भ रखें (उदा। देखेंडिडलोड मूल दृश्य नियंत्रक सरणी की प्रतिलिपि लें) ताकि आप जब भी चाहें वापस लौट सकें। –

-4

बेहतर तरीका छवि के बजाय केवल पाठ का उपयोग करना है। पाठ के रूप में 'स्पेस' चुनें, फिर उसे अक्षम करें। तो उपयोगकर्ता इसे देखने में सक्षम नहीं होगा। मैंने इसका परीक्षण नहीं किया है, लेकिन मुझे यकीन है कि यह काम करेगा।

4

उन लोगों के लिए जो सिर्फ एक आइटम को अक्षम करना चाहते हैं। @ Daniele के समाधान से इस कोड का प्रयोग करें। और अपने UITabBarController वर्ग

viewDidLoad() { 

let index = 0 //0 to 5 
viewControllers?.remove(at: index) 

} 
+0

क्या आपको इसे हटाने के बाद वापस आने के बारे में पता है? – Adam

2

स्विफ्ट 3.1 में रखें:

override func viewDidAppear(_ animated: Bool) { 

} 
override func viewDidLoad() { 
    super.viewDidLoad() 

} 

viewControllers?.remove(at:0) // for 0 index 
viewControllers?.remove(at:1) // for 1 index 
viewControllers?.remove(at:2) // for 2 index 

अगर आपके पास (आप viewDidLoad और viewDidAppear उन दोनों में इस विधि का उपयोग कर सकते हैं) टैब बार नियंत्रक में केवल एक ही सूचकांक दूर करने के लिए टैब बार में 4 सूचकांक और आप पिछले 2 सूचकांक निकालना चाहते

viewControllers?.remove(at:2) 
viewControllers?.remove(at:2) 

पहली पंक्ति है जब आप में 2 को दूर सूचकांक 3 एक और आप 3 फिर 4 से और शेष जाएगा निकाल देंगे डीईएक्स यह फिर से तीसरे सूचकांक को हटा देगा और फिर आप अंत में 2 सूचकांक बने रहेंगे।