6

पर टैब बार आइटम जोड़ने में समस्या मेरे पास एक टैब बार आधारित एप्लिकेशन है जिसमें मैं UITabBar की setItems विधि का उपयोग करके टैब बार में टैब बार आइटम जोड़ने की कोशिश कर रहा हूं।UITabBar

[self.tabBarController.tabBar setItems:self.level1TabBarItems animated:YES]; 

कहाँ self.level1TabBarItems उस में एक NSMutableArray 4 के साथ UITabBarItems है:

यहाँ कोड है। जब मैं यह कोड चलाता हूं, तो मुझे कंपाइलर से अपवाद मिलता है।

NSInternalInconsistencyException, कारण: सीधे एक टैब बार एक टैब बार नियंत्रक द्वारा प्रबंधित को संशोधित करने की अनुमति नहीं है।

मैंने UITabBarViewController को हटाने और इसे फिर से जोड़ने का प्रयास किया है लेकिन यह काम नहीं करता है।

उत्तर

14

The documentation स्पष्ट रूप से बताता है कि आपको सीधे टैब बार को संशोधित नहीं करना चाहिए। इसके बजाय setViewControllers:animated: का उपयोग करें।

1

AFAIK आप टैबबार को प्रतिस्थापित नहीं कर सकते हैं। ऐप्पल द्वारा इसकी अनुमति नहीं है। मैं इसे अभी देख लूंगा।

हालांकि आप क्या कर सकते हैं, सेगमेंट नियंत्रक बना रहा है और इसे टैबबार की तरह दिखने के लिए पुन: स्थापित करें। यह काफी उपयोग है।

संपादित करें: ऊपर, निंजा पोस्टर ने यह कहा: आप टैबबार को वैकल्पिक नहीं कर सकते हैं। मैं खंडित नियंत्रक का सुझाव दूंगा।

2

मुझे आशा है कि निम्न कोड के साथ मदद कर सकता है:

func application(_application: UIApplication, 
       didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
{ 
    // Override point for customization after application launch. 

    window = UIWindow(frame: UIScreen.main.bounds) 
    window?.rootViewController = LongUITabBarController() 
    window?.makeKeyAndVisible() 

    return true 
} 
import UIKit 


class LongUITabBarController: UITabBarController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let vc1 = VC1_ViewController() 
     let vc2 = VC2_ViewController() 
     let vc3 = VC3_ViewController() 
     let vc4 = VC4_ViewController() 

     vc1.tabBarItem = UITabBarItem(title: "LIST ALL", image: UIImage(named: "list"), tag: 1) 
     vc2.tabBarItem = UITabBarItem(title: "BEST CELLER", image: UIImage(named: "bestCeller"), tag: 2) 
     vc3.tabBarItem = UITabBarItem(title: "MOST LIKE", image: UIImage(named: "like"), tag: 3) 
     vc4.tabBarItem = UITabBarItem(title: "NEW", image: UIImage(named: "new"), tag: 4) 

     viewControllers = [vc1, vc2, vc3, vc4] 
     setViewControllers(viewControllers, animated: true) 

     // backGround for tapBarView 
     tabBar.barTintColor = #colorLiteral(red: 0.2745098174, green: 0.4862745106, blue: 0.1411764771, alpha: 1) 

    } 


}