试图删除 TabBarController Item 但 TabBar Controller 返回 nil

Trying to remove TabBarController Item but TabBar Controller is returning nil

当我推送到标签栏控制器时,我从集合视图单元格传递数据。

我有一个导航控制器,我将 segue 推送到 tabbarcontroller。所以 TabBarController 在导航控制器中。

数据传递非常适合我准备继续使用的这段代码。

let indexPaths = self.collectionView!.indexPathsForSelectedItems()!
        let indexPath = indexPaths[0] as NSIndexPath
        let row = indexPath.row
        let tabar = segue.destinationViewController as! ResultsDetailViewController
        tabar.photoData = photoDataStore[row]

我将 TabBarController 子类化为 photoData 变量。所以所有的子视图控制器都工作得很好。

但我想做的是,如果 photo2 为 nil,则删除 tabbarcontroller 的第三个视图控制器。我从另一个 post 那里得到了这段代码。问题是 self.tabbarcontroller 返回 nil。不明白为什么?

    if let tabBarController = self.tabBarController {
        let indexToRemove = 2
        if indexToRemove < tabBarController.viewControllers?.count {
            var viewControllers = tabBarController.viewControllers
            viewControllers?.removeAtIndex(indexToRemove)
            tabBarController.viewControllers = viewControllers
        }
    }

由于 tabbarcontroller 是通过 storyboard 开发的,所以我没有在 appdelegate 中设置它。

最后我希望标签栏按钮的数量和视图控制器的数量是动态的。

谢谢

确定发现了问题...当我做 self.tabbarcontroller 时使用自定义 Tabbarcontroller 返回 nil...self 已经是 tabbarcontroller...所以我只是使用 self.viewcontrollers下面的工作代码。

        if var tabBarController = self.viewControllers {
            let indexToRemove = 2
            if indexToRemove < tabBarController.count {
                tabBarController.removeAtIndex(indexToRemove)
                self.setViewControllers(tabBarController, animated: false)
            }
        }