从模态视图控制器返回时,选项卡栏消失

3
我有一个奇怪的问题,一直无法解决。我有一个相对较大的应用程序,从UIViewControllers和UITableViewControllers都有segues到模态视图控制器。UIViewControllers似乎运行良好,但是table view controllers存在一个不一致的问题。当我跳转到模态控制器时,选项卡栏会显示,并且在模态视图中正确显示。但是,当我关闭模态控制器时,有50/50的机会,table view controller上的选项卡栏会消失。背景视图延伸到屏幕底部。选项卡栏是半透明的,所以我希望背景能够延伸到其后面,但是我不知道为什么在某些情况下(使用相同的控制器和相同的情况)可以正常工作,而在其他情况下则不能。我还没有找到任何规律。
在segue到模态之前: enter image description here 从模态返回后: enter image description here 初始tableview控制器:
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)
    }
}

我已经尝试了所有的“扩展边缘”设置,包括开启和关闭,并且我还尝试了覆盖顶部栏和底部栏的“Inferred”设置。在所有视图控制器上,我的演示设置为“当前上下文”。
非常感谢您的任何建议,因为我已经没有尝试的东西了。

请发布相关的代码。 - MikeG
你是如何取消模态视图控制器的显示的? - beyowulf
我编辑了原始帖子,包括调用和返回代码。 - Lastmboy
@Lastmboy,也许可以考虑使用取消视图控制器的方式,而不是使用dismissViewControllerAnimated。 - nsinvocation
我将几个dismiss调用切换到了unwind segues,并感到兴奋,因为在模拟器中它完美地工作了。然而,一旦我把它放到我的iPhone上,它又开始偶尔出现这个问题了。 - Lastmboy
有没有办法我可以追踪实际发生的事情?例如,视图是否在选项卡栏前面,或者选项卡栏甚至不存在等。 - Lastmboy
3个回答

9
我曾经遇到过同样的问题,我通过在segue的演示类型中选择“Over Current Context”来解决它。请参见下图:

Attribute inspector


什么神奇的解决方案 - coolcool1994

2
我找到的唯一解决方案是删除所有模态转场。我将它们全部切换为“显示”转场,此后就没有出现问题了。可能与我没有全屏显示模态视图有关。我仍然在底部保留了选项卡栏。从模态视图返回调用者时,选项卡栏通常会闪烁着颜色,有时选项卡栏会重新出现,而有时则会被背景覆盖。

0
如果我理解你的问题正确:当我第一次开始与选项卡控制器混合时,我也遇到了同样的问题!我发现,如果你从视图控制器以模态方式返回,则必须完全返回到选项卡控制器。对我来说,dismissViewController 更好用。

我应该澄清一下。我并没有“返回”到之前的控制器。我是使用dismissViewController,以及后来的unwind segues来返回。然而,仅仅因为原始的segue到视图控制器是模态的,当解除它时就会出现问题。我强制模态视图控制器不要全屏显示(即仍然显示选项卡栏)。现在我使用Show来到那里,使用popViewController返回,一切都正常工作。 - Lastmboy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接