【问题标题】:Data disappears when switching between view controllers在视图控制器之间切换时数据消失
【发布时间】:2013-09-24 21:45:22
【问题描述】:

我正在编写一个 iPhone 应用程序,使用故事板作为初始模型。我现在遇到的问题是切换视图控制器。

我有一个表视图控制器和另一个视图控制器。我想做的就是使用后退按钮返回原始屏幕,我可以这样做,除了数据消失。我的故事板如下所示。

我有返回按钮回到原来的导航控制器。我也让它回到卡片视图控制器。

我对一些示例单元格进行了硬编码,以查看事物的外观,并且在我运行模拟时它们显示得很好。但是,当我单击后退按钮时,它会返回到所有卡片屏幕,并且那里的单元格现在消失了。

如果我需要发布一些代码,只需询问哪一部分会有所帮助,不过我已经通过情节提要完成了所有这些工作。

我确信这是我所做的一些愚蠢的事情,任何正确方向的观点都将不胜感激。

【问题讨论】:

    标签: ios uiviewcontroller storyboard


    【解决方案1】:

    基本上:你推到了应该弹出的地方。

    您在故事板上看到的内容还不存在。通过在运行时对视图控制器进行 segue-waying,它会被实例化。

    当您在运行时从 Add Card 视图控制器“返回”到 Card View Controller 时,发生了以下情况:而不是弹出导航堆栈一直回到您已经拥有的 Card View Controller,您只是实例化了一个新的 Card View Controller 并将其推送到导航堆栈上。您可以通过多次点击返回按钮回到原来的卡片视图控制器来验证这一点。

    您可以执行以下操作来完成您的任务: 不要使用情节提要作为后退按钮,而是在代码中使用 IBAction:

    - (IBAction)popToRoot:(id)sender {
    
        [self.navigationController popToRootViewControllerAnimated:YES];
    
    }
    

    【讨论】:

    • 啊。这很有意义。我什至没有想到这一点。所以它与故事板的第一次尝试有关。附带问题:我需要为我拥有的每个视图控制器一个类吗?即我有主页视图并在此处添加卡片视图,我将有两个视图。每个人都需要一个视图控制器类和它自己的导航控制器吗?
    • 我的错误。我看你的截图不够仔细。 1)您只需要一个导航控制器。 2) 故事板中的任何视图控制器都已经有一个类(即 UIViewController)。如果你想添加功能(比如代码中的 IBAction),你只需要给它一个自定义类
    • 要“更深入”地进入您的导航堆栈,只需通过 push segue 连接内容视图控制器。要弹回根视图控制器,请使用提到的 IBAction。
    • 为了更好地理解这一切是如何运作的,我强烈推荐斯坦福大学关于该主题的讲座:stanford.edu/class/cs193p/cgi-bin/drupal(在 iTunes 大学免费提供)
    • 好的,一个导航控制器更有意义,但我放了第二个,它并没有对我大喊大叫,所以我不确定。我相信我现在明白了,非常感谢您的回答。那些讲座看起来很棒,我会开始的!
    猜你喜欢
    • 2012-05-09
    • 1970-01-01
    • 2015-03-25
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多