iphone - 刷新 UITabBar 选项卡的 View 或在重新选择选项卡时从 UITabBar 选项卡的 View 调用方法

标签 iphone objective-c ios cocoa-touch uitabbarcontroller

除了第一次切换到选项卡时,最初触发 ViewDidLoad 时,切换到(重新选择)该选项卡的所有后续操作似乎都不会触发 ViewDidLoad,也不会触发任何其他方法。 View 似乎被缓存并立即重新显示,就像用户离开该选项卡时的样子。但是,当用户重新选择特定选项卡时,我需要刷新其 View 。因此,如果可能的话,我需要以某种方式从 View 中触发一个方法,而无需额外的用户交互(在选项卡重新选择之后)。

我知道 UITabBarDelegate 中有一个方法应该在选项卡切换发生之前或之后被调用,但我不知道这是否是从选项卡 View 中触发方法调用的方法重新激活所述选项卡。我不知道如何从委托(delegate)中访问选项卡 View 的已激活实例。对此的任何指导都会非常有帮助!

最佳答案

使用 UITabBar 时,您的 View 将保持事件状态,除非收到内存警告并且必须释放它们。因为它们永远保持事件状态,viewDidLoad 只会被调用一次(除非您的 View 由于内存警告而被卸载)。

viewWillAppear 和 viewDidAppear 将在每次 View 将/确实显示在屏幕上时被调用,因此这是您想要刷新 View 或数据的地方。

viewWillAppear 更适合在您希望在用户看到之前更新 View 上的任何内容的情况下使用。例如,设置 UILabels 或 UITextFields 以清除数据。这将防止用户在清除之前看到旧数据的快速闪现。在此方法中运行任何会使用大量系统资源或花费很长时间(即网络服务)的东西都可能会减慢您的应用程序,并且会阻止您同时显示 UIActivityIndi​​cator,因为这是在 View 实际出现之前。

viewDidAppear 对于在 View 显示后可以更新的任何内容都非常有用,例如前面示例中的网络服务。

关于iphone - 刷新 UITabBar 选项卡的 View 或在重新选择选项卡时从 UITabBar 选项卡的 View 调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7045447/

相关文章:

iphone - 您如何使用 mailgun 快速在 ios 应用程序上发送图像附件?

ios - 使 UIImageView 适合 UIImage

objective-c - objective-c :componentsSeperatedByRegex

ios - 带有分页 ScrollView 的自定义页面控件

ios - NSDateFormatter 在 IOS10 中返回 nil

ios - 每隔5分钟Phonegap在后台唤醒应用程序以检查iOS位置

iphone - 从 Plist 登录检查凭据

iphone - 是否有 NSURLConnection 的可靠替代方案?

iphone - 在 iPhone 游戏中播放声音 - 速度变慢

ios - 我如何使用从 NSFetchRequest 返回的属性?