9

setItemsのメソッドを使用してタブバーアイテムを動的にタブバーに追加しようとしているタブバーベースのアプリケーションがありますUITabBar

コードは次のとおりです。

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

4が入ってself.level1TabBarItemsいるのはどこですか。このコードを実行すると、コンパイラから例外が発生します。NSMutableArrayUITabBarItems

NSInternalInconsistencyException、reason:タブバーコントローラーによって管理されるタブバーを直接変更することは許可されていません。

を削除しUITabBarViewControllerて再度追加しようとしましたが、機能しませんでした。

4

3 に答える 3

16

The documentationタブバーを直接変更してはならないことを明確に示しています。setViewControllers:animated:代わりに使用してください。

于 2011-05-31T06:33:25.373 に答える
11

次のコードでお役に立てば幸いです。

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)

    }


}
于 2016-12-29T04:40:05.847 に答える
1

AFAIKではタブバーを置き換えることはできません。Appleでは許可されていません。今からチェックします。

ただし、できることは、segmentedControllerを作成し、タブバーのようにスタイルを変更することです。それはほとんど同じ用途を持っています。

編集:上記、忍者のポスターはそれを言った:あなたはタブバーを交互にすることはできません。セグメント化されたコントローラーをお勧めします。

于 2011-05-31T06:33:34.657 に答える