【问题标题】:Issue with Storyboard and PerformWithSegueIdentifierStoryboard 和 PerformWithSegueIdentifier 的问题
【发布时间】:2016-08-07 06:43:30
【问题描述】:

我正在尝试使用 Storyboard 和 Swift 2.0 开发应用程序。 我有一个 SideMenuController,里面有一个 UITableView 和一个 CenterViewController。每次我点击侧面菜单上的一行时,我都会执行此操作:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    if (indexPath.row == 0){
        self.sideMenuController()?.performSegueWithIdentifier(CenterSegue, sender: nil)
    }else if(indexPath.row == 1){
        self.sideMenuController()?.performSegueWithIdentifier(SaloniSegue, sender: nil)
    }else if(indexPath.row == 2){
        ...
}

一切似乎都很好,但在一个小测试中,我指出旧的视图控制器仍在堆栈中。

有没有办法将它们弹出以防止 RAM 过载?

【问题讨论】:

  • 你的segue类型是什么?
  • 显示类型(如Push)

标签: ios swift uitableview storyboard segue


【解决方案1】:

是的,您可以通过访问 navigationController.viewController 属性来做到这一点 看看这个功能......你会有所了解...... 也可以代替推...如果需要,您可以执行Segue

func pushController()
{
    // Variable to check whether viewcontroller is present in memory or not
    var isFound = false;

        // searching in array of viewControllers of navigationController
        for item in self.navigationController!.viewControllers
        {
            if(item.isKindOfClass(ViewController) == true)
            {
                isFound = true;
            }
        }

    if(isFound == false)
    {
        // LoadView then push it
        self.navigationController?.pushViewController(yourViewController, animated: true);
    }
    else
    {
        // View Is in memory so just pop to it
        self.navigationController?.popToViewController(yourViewController, animated: true);
    }
}

【讨论】:

  • 我想我不能使用它,因为我的self.sideMenuController 它不是 UINavigationController 而是 UIViewController。不幸的是,它没有要访问的视图控制器数组。我想在另一个 ViewController 推送时销毁一个 ViewController。
  • 你使用的是哪种类型的segue
  • 输入自定义,我用这个控制器来管理侧边菜单。 github.com/teodorpatras/SideMenuController
  • 是的,这个控件使用navigationController来pushViews,而你正在使用的这个segue是push或show类型的......所以这个方法在这里可以工作......你可以试试
  • 在执行 Segue 之前在 navigationController 中使用此方法检查 viewController 是否存在...我认为这应该可行
【解决方案2】:

首先,改变你的导航结构,去掉汉堡包/左菜单,这绝对是sux。

【讨论】:

  • 我喜欢侧边菜单结构,左侧菜单是汉堡包。
  • 苹果推送/强制所有流行的应用程序摆脱它...检查流行的应用程序都禁用了他们的汉堡菜单,因为从长远来看,它会破坏用户的应用程序导航体验,用户可能会觉得在哪里地狱我在应用程序?在哪个选项卡/菜单等中。
  • 谢谢你,你是对的。我会尝试向我的客户解释,他确实喜欢它:-)
  • @turushan,看起来不像是我的答案。这可能是评论,但绝对不是答案。 -1.
猜你喜欢
  • 2018-05-31
  • 1970-01-01
  • 2015-04-29
  • 2015-01-23
  • 2022-09-27
  • 2014-11-11
  • 2018-07-04
  • 2010-10-28
  • 2013-11-15
相关资源
最近更新 更多