gpt4 book ai didi

ios - 如何在 Xcode 中使用 UIViewController 的共享实例?

转载 作者:行者123 更新时间:2023-11-29 01:24:33 27 4
gpt4 key购买 nike

这听起来像是重复的,但我需要对我的场景有进一步的理解和解释。

在我的应用程序中,我有一个 InfoViewController,它表示从其他 Controller 调用(推送)时的信息,例如 1)HomeViewController、2)FavouriteViewController 和 3)DownloadViewController。 UITabViewController

持有所有 3 个

InfoViewController 有大约 10 个按钮和相应的操作。我使用单独的单例来保存所有信息对象。

所有 3 个 ViewController(由 TabVC 持有)--> 将对象加载到 Singleton --> InfoViewController 使用它来呈现详细信息

HomeViewController - 用于呈现新的“信息”,每天都在变化当信息存在时,

用户可以将其标记为收藏夹,然后在 FavoriteViewController 中列出(在 UITableView 中)。用户可以将其保存在手机中以供将来引用,这将在 DownloadViewController 上列出(在 UITableView 中)。

在选择单元格时,所有 3 个都使用 InfoViewController 表示详细信息。

现在我只想在 InfoViewController 上显示一个实例以供用户查看。并非全部 3 个选项卡。目前,我正在使用 ViewDidDisappear 方法将其切换回主屏幕。仅当我将 InfoViewController 作为子项添加到主要 3 VC 时才有效。不是靠推。

现在我的问题是,我尝试使用 Appdelegate 来初始化 SharedInfo 对象

sharedInfo = [InfoViewController alloc]init],但它进入黑屏。我必须将它初始化为

[self.storyboard instantiateViewControllerWithIdentifier:@"InfoViewController"];

但这在 AppDelegate 中是不允许的,也不允许在 InfoViewController 本身上创建共享实例。

如何实现一次只向用户显示一个实例?

最佳答案

我认为改写您需要的内容可能会有所帮助。我不认为你真的想要 UIViewController 的共享实例。您想要的是显示在一个或多个 View 中的单一数据源,以及一种在数据更改时在所有 View 中更新该数据的方法。

两种可能的解决方案是:

NS通知任何包含共享数据的 View 都会在数据更改时订阅通知。当通过单例更新数据时,它会向任何收听更新 View 数据的人发送广播。

查看生命周期在第二种方法中,特定 View 中的数据仅在用户调出该 View 时更新。请注意,在选项卡栏界面中,最初加载 View 时会调用 viewDidLoad。如果数据发生变化,请不要在此处更新您的数据。相反,您希望更新 viewWillAppear 中的数据,因为每次导航到该 View 时都会调用它。在 viewWillAppear 中,您拥有检查数据并在需要时更新数据的代码。

还有其他方法可以给这只猫剥皮,但以上两种方法都适合您。

关于ios - 如何在 Xcode 中使用 UIViewController 的共享实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34176125/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com