【问题标题】:View controller view getting misplaced when navigating back to the home screen of UITabbarController导航回 UITabbarController 的主屏幕时,视图控制器视图放错了位置
【发布时间】:2016-01-21 07:47:15
【问题描述】:

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

当我在第二个标签栏项目中时,我有一个嵌入了导航控制器的表格视图,其中填充了用户名,在顶部我有一个汉堡包图标,我从汉堡包图标中的表格列表中选择一个特定项目并导航到我使用 segues 的细节视图控制器,下面给出的是相同的代码

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

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

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

  @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

请建议我哪里出了问题以及需要做些什么来解决这个问题,我唯一的困难是视图被扭曲了,我真的不知道为什么会这样。

【问题讨论】:

    标签: ios uitabbarcontroller uistoryboard uistoryboardsegue


    【解决方案1】:

    通过应用程序中的代码调用控制器的视图应该可以解决问题

    objParentTabbar.selectedViewController?.viewWillAppear(true)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 2019-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多