【问题标题】:Add a UITabBarItem to an already existing UITabBar (made in storyboard)将 UITabBarItem 添加到已经存在的 UITabBar (在情节提要中制作)
【发布时间】:2015-05-23 03:41:20
【问题描述】:

因此,我需要将新的UITabBarItem 添加到我在情节提要中创建的现有UITabBar

到目前为止,我认为我已经能够正确访问 UITabBar,但无法创建 UITabBarItem 并将其添加到 UITabBar

到目前为止,这是我所拥有的:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    var tabBarController = self.window!.rootViewController as UITabBarController
    var tabBar = tabBarController.tabBar as UITabBar

    var tabBarItem1 = tabBar.items![0] as UITabBarItem
    var tabBarItem2 = tabBar.items![1] as UITabBarItem
    var tabBarItem3 = tabBar.items![2] as UITabBarItem

    tabBarItem1.selectedImage = UIImage(named: "tab-frame-on")
    tabBarItem2.selectedImage = UIImage(named: "tab-quote-on")
    tabBarItem3.selectedImage = UIImage(named: "tab-hash-on")

    var instaTab: UITabBarItem = UITabBarItem(title: "", image: UIImage(named: "tab-instagram-off"), selectedImage: UIImage(named: "tab-instagram-on"))
    tabBar.items?.append(instaTab)

    return true

}

此函数是AppDelegate 的一部分。正如您在第 14 行看到的那样,我正在创建 UITabBarItem,如下所示:var instaTab: UITabBarItem = UITabBarItem(title: "", image: UIImage(named: "tab-instagram-off"), selectedImage: UIImage(named: "tab-instagram-on")),然后尝试通过附加它来将其添加到现有的标签栏项目中。这给了我AppDelegate 类实例化的 SIGABRT 错误。

我做错了什么?

【问题讨论】:

    标签: xcode swift storyboard uitabbarcontroller


    【解决方案1】:

    如果您查看 Xcode 控制台,它应该会告诉您您做错了什么。

    *** 由于未捕获异常'NSInternalInconsistencyException'而终止应用程序,原因:'不允许直接修改由标签栏控制器管理的标签栏。'

    tabBar.itemsUITabBarController 控制。您必须改为修改 UITabBarController 的 viewControllers 属性。

    例如:

    tabBarItem3.selectedImage = UIImage(named: "tab-hash-on")
    
    
    let instaViewController = UIViewController()
    instaViewController.tabBarItem = UITabBarItem(title: "", image: UIImage(named: "tab-instagram-off"), selectedImage: UIImage(named: "tab-instagram-on"))
    
    var viewControllers = tabBarController.viewControllers!
    viewControllers.append(instaViewController)
    tabBarController.viewControllers = viewControllers
    
    
    return true
    

    【讨论】:

    • 嘿,非常感谢!作为您非常清楚地指出的一课 - 我会更加关注 Xcode 控制台!还有,为什么我们不能直接修改标签栏?
    猜你喜欢
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 2014-02-07
    • 2010-12-24
    • 1970-01-01
    相关资源
    最近更新 更多