【问题标题】:Tab bar disappears when returning from modal view controller从模态视图控制器返回时标签栏消失
【发布时间】:2016-06-25 20:27:01
【问题描述】:

我有一个无法解决的奇怪问题。我有一个相对较大的应用程序,其中包含 UIViewControllers 和 UITableViewControllers 的模态视图控制器。 UIViewControllers 似乎工作正常,但是,表视图控制器存在不一致的问题。当我转到模态控制器时会显示选项卡栏,并且它会在模型​​视图中正确显示。但是,当我关闭模态控制器时,表格视图控制器上的选项卡栏有 50/50 的可能性会消失。背景视图延伸到屏幕的底部。标签栏是半透明的,所以我希望背景在它后面延伸,但我不知道为什么在某些情况下(使用相同的控制器和相同的情况)可以正常工作而有些不能。我一直没能找到任何模式。

转至模态之前:

从模态返回时:

初始表格视图控制器:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    if optionEnabled[indexPath.row] {
        let segues:[String] = ["profileMenuSegue", "servicesProvidedSegue", "myWorkDaySegue", "myWorkWeekSegue", "timeOffSegue", "myAvailabilitySegue", "staffSegue", "promoSegue", "activateAccountSegue", "addWeekSegue"]

        performSegueWithIdentifier(segues[indexPath.row], sender: self)
    }

}

模态视图控制器:

Alamofire.request(.POST, url, parameters: params, encoding: ParameterEncoding.URL)
    .validate()
    .responseJSON { (request, _, result) in
        switch result {
        case .Success(let data):
            json = JSON(data)
            print(json)
            print("request successful")

            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                self.dismissViewControllerAnimated(true, completion: nil)
            })
        case .Failure(_, let error):
            print("request failed")
            print(error)
    }
}

我已尝试打开和关闭所有“扩展边缘”设置,并尝试覆盖顶部栏和底部栏的“推断”。我在所有视图控制器上都将演示文稿设置为“当前上下文”。

任何建议都非常感谢,因为我已经没有东西可以尝试了。

【问题讨论】:

  • 请贴出相关代码
  • 你是如何关闭模态视图控制器的?
  • 我编辑了原始帖子以包含调用和返回代码。
  • @Lastmboy 可能不使用dismissViewControllerAnimated 只是展开segue
  • 我将几个关闭调用切换到放松 segues 并且很兴奋,因为我认为我们拥有它,因为它在模拟器中完美运行。但是,一旦我把它放在我的 iPhone 上,它就会再次开始定期这样做。

标签: ios swift uitableview uitabbar


【解决方案1】:

我遇到了同样的问题,我修复了在 segue 的演示类型上选择“Over Current Context”的问题。见图片:

【讨论】:

  • 多么神奇的解决方案
【解决方案2】:

我能找到的唯一可行的解​​决方案是删除所有模态转场。我将它们全部切换到“显示”序列,从那以后就没有问题了。一定与我没有全屏显示模态视图这一事实有关。我仍然在底部有标签栏。当从模态视图切换回调用者时,标签栏上经常会出现一闪而过的颜色,然后有时标签栏会回来,有时会被背景覆盖。

【讨论】:

    【解决方案3】:

    如果我的问题是正确的: 当我第一次开始使用标签栏控制器时,我遇到了同样的问题!我发现,如果您以模态方式从视图控制器返回,则必须一直返回到选项卡栏控制器。 dismissViewController 对我来说效果更好。

    【讨论】:

    • 我应该澄清一下。我并没有“回到”以前的控制器。我正在使用dismissViewController,后来展开segues 以返回。然而,视图控制器的原始 segue 是模态的这一事实,在解除它时会导致问题。我强迫模态视图控制器不是全屏的(即仍然显示标签栏)。现在我使用 Show 到达那里并使用 popViewController 返回,一切正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多