【问题标题】:Trying to remove TabBarController Item but TabBar Controller is returning nil尝试删除 TabBarController 项,但 TabBar 控制器返回 nil
【发布时间】:2016-05-30 01:23:03
【问题描述】:

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

我有一个导航控制器,我将一个 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 的第三个视图控制器。我从另一个帖子中得到了这个代码。问题是 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 中设置它。

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

谢谢

【问题讨论】:

  • 你是如何在 storyboard 中设置 tabor 控制器的,请添加截图

标签: swift uitabbarcontroller


【解决方案1】:

好的,发现问题...当我在执行 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)
            }
        }

【讨论】:

  • 你的观察帮助了我。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多