NavigationController嵌套在TabController动画错误中

时间:2018-11-06 21:53:07

标签: swift xcode navigationcontroller

我尽力解释正在发生的事情。

我已将XCode更新为版本10.1(10B61)

iPhone和Simulator上的iOS为v 12.1


我的应用程序有一个带有5个标签的TabController。

First: Posts
Fifth: Profile Posts
  

这些被嵌入到导航控制器中(如果有人   点击评论按钮)

所以。我注意到,如果我运行我的应用程序,然后单击注释,它将以一种奇怪的方式将vc推送到屏幕,然后单击“颠簸”。而且向后滑动也不起作用。

但是,如果我先切换选项卡,则一切正常。

VIDEO:

https://www.youtube.com/watch?v=fgS3j21L8Js

如您在视频中所见,切换到个人资料帖子 +返回后,一切都很好。

更新1:

因此,如果我启动我的应用,请切换到另一个选项卡,然后再回到原始选项卡,就可以正常工作。

请求的代码:

func commentsButtonTapped(sender: UIButton) {
        let touchPoint:CGPoint = sender.convert(CGPoint.zero, to:self.tableView)
        if let indexPath = tableView.indexPathForRow(at: touchPoint) {
            openDetails(indexPath: indexPath, shouldShowKeyboard: false)
        }
    }
func openDetails(indexPath: IndexPath, shouldShowKeyboard : Bool) {
        if (self.tableView.cellForRow(at: indexPath) as? WorldMessageCell) != nil {

            let storyboard = UIStoryboard(name: "Additional", bundle: nil)
            let vc = storyboard.instantiateViewController(withIdentifier: "DetailsViewController") as! DetailsViewController

            vc.postId = PostIds.shared.nearby.ids[safe: indexPath.row]
            vc.shouldShowKeyboard = shouldShowKeyboard

            self.navigationController?.pushViewController(vc, animated: true)
        }
    }

更新2:

通过强制TabController在选项卡之间切换来解决此问题。

override func viewDidAppear(_ animated: Bool) {

        self.selectedIndex = 1
        self.selectedIndex = 0

    }

但这不是它的工作方式。

更新3:

我已经对其进行了测试,如果我将navigation controller-> vc设置为初始vc(因此没有制表符控制器),则一切正常。

但是,一旦Navigationcontroller嵌套在选项卡中,它就会发生。

我创建了一个新项目,以测试这是否是特定于版本的bug,但是没有,一切正常。所以问题一定出在我的应用上。

什么会引起这样的问题(在视频中)?

1 个答案:

答案 0 :(得分:0)

哦..我发现了问题和错误:

因此,如果将navigation controllers嵌套在调用tab controller函数的viewDidLoad()中,那么导航控制器将出现问题。

我必须完全删除的代码:

override func viewDidAppear(_ animated: Bool) {
        // here i had some code ... /

    }

现在一切正常。.