导航回 UITabbarController 的主屏幕时,视图控制器视图错位

View controller view getting misplaced when navigating back to the home screen of UITabbarController

我的应用程序中有一个 tabbarcontroller,并在故事板和 segues 的帮助下添加了视图控制器,

当我在第二个标签栏项目中时,我有一个 table 视图嵌入了一个充满用户名的导航控制器,在顶部我有一个汉堡包图标,我 select 来自table 列表显示在汉堡包图标中并导航到详细信息视图控制器我使用了 segues,下面给出了相同的代码

self.performSegueWithIdentifier("MY_DETAIL_SEGUE_NAME", sender: nil)

MY_DETAIL_SEGUE_NAME 实际上是 SWRevealViewControllerSeguePushController 的自定义推送转场,推送工作正常,我可以导航到详细信息屏幕。

问题: 因为我在点击后退按钮时位于第二个标签栏项目中,所以我需要显示第二个标签栏项目的初始视图/主页视图控制器,即好友视图列表,所以在后退按钮上,我在详细信息屏幕中编写了以下代码

  @IBAction func moveBackToController(sender: AnyObject) {
        self.performSegueWithIdentifier("showFriendListPage", sender: nil)
    }

showFriendListPage: 这是使用 SWRevealViewControllerSeguePushController 到 firendlist 页面的自定义 segue,并指向 tabbarcontroller

为了突出显示第二个选项卡栏项目,我使用了在详细信息屏幕中编写的以下代码

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
    let objParentTabbar = segue.destinationViewController as! ParentTabbarController
    if segue.identifier == "showFriendListPage" {
    objParentTabbar.selectedIndex = 1
    }
}

这里发生的事情是,当我导航回第二个选项卡栏项目的主屏幕时,我的视图被扭曲了,即 UI 元素没有按照我第一次访问时的正确顺序放置第二个标签栏

注意:我所有的视图控制器都嵌入在导航控制器中,所以结构是

TabbarController----->NavigationController------>ViewController

请指出我哪里出错了,需要做些什么来解决这个问题,我唯一的挣扎是视图变得扭曲,我真的不知道为什么会这样。

通过应用程序中的代码调用控制器视图应该可以做到这一点

objParentTabbar.selectedViewController?.viewWillAppear(true)