【问题标题】:Xcode recreate UIViewController possible?Xcode 可以重新创建 UIViewController 吗?
【发布时间】:2019-02-24 00:10:36
【问题描述】:

有没有办法从内部“重新创建”UIViewController。 Android SDK 11 向活动添加了recreate() 方法。在研究这个主题时,我发现了这个用于 UI 恢复:UI Restoration

我不认为这真的是我要找的。​​p>

基本上,我的应用程序是一个抽认卡应用程序,它允许用户在完成套牌时如果错过任何单词,可以重试错过的单词。在 Android 中,它是一个简单的 this.recreate(),缺少的单词存储在 SharedPreferences 中,然后使用新的 SharedPreferences 字段重新加载视图。我有这个工作的UserDefaults 方面。如果可以为 iOS 重新创建视图,我不会关注。也许是先出去然后再回来?

我找到了这个问答:stackoverflow link

但我没有使用导航控制器。只是一个简单的 UIViewController。

感谢阅读!

【问题讨论】:

    标签: ios swift xcode uiviewcontroller


    【解决方案1】:

    我假设您希望视图控制器的属性及其视图都与以前一样。这样做没有“灵丹妙药”。你只需要自己做。

    现在,如果您的视图控制器构造正确,它的属性会自动决定它的界面。因此,通常的做法是保存属性值(例如在 UserDefaults 中),然后从那里恢复它们和界面。

    也可以只保留视图控制器,以便以后可以直接再次使用它。毕竟,它只是一个普通的物体。这可能有点冒险,因为视图控制器的视图是内存密集型的,但有一些方法可以减少它占用的内存量。

    【讨论】:

    • 会(并且有可能)从同一个 VC 中分离出来并返回到同一个 VC 中吗?你所说的绝对是可能的,但非常困难,因为我正在跟踪一堆统计数据。我必须为此编写一个接口。不是不可能,只是工作量很大。退出并重新进入会更容易。是不是很差的形式?会不会导致内存问题。还是我应该只写界面?
    • 我不知道“退出并返回”是什么意思。您在原始问题中没有详细描述实际情况,所以我不知道您的总体目标是什么。
    • 我的意思是这样的:link 我的问题的本质是,是否有适当的方法从 UIViewController 内部(以编程方式)“重新启动”,所以 viewWillDisappear、viewDidUnload、dealloc、调用 viewDidLoad 和 viewWillAppear。我想如果有办法让 segue 做到这一点会更容易吗?
    • 我不太明白那是什么意思。如果您能解释一下您的实际用例,将会更有帮助。
    • 嘿,马特,我接受了你的回答作为“答案”。基本上你一开始说的都是对的。没有简单的命令或技术可以完成您可以使用 Android 和 recreate() 执行活动的操作。昨晚我为我的 UIViewController 编写了一个接口,以根据发生的逻辑处理删除和添加到子视图。谢谢!希望这将帮助其他熟悉 Android 和学习 iOS 的人。这是 Android 和 iOS 应用生命周期之间的根本区别。
    猜你喜欢
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 2013-02-03
    • 2021-09-14
    相关资源
    最近更新 更多