Iphone 刷新uitabar选项卡';从UITabBar选项卡查看或调用方法';重新选择选项卡时的视图

Iphone 刷新uitabar选项卡';从UITabBar选项卡查看或调用方法';重新选择选项卡时的视图,iphone,objective-c,ios,cocoa-touch,uitabbarcontroller,Iphone,Objective C,Ios,Cocoa Touch,Uitabbarcontroller,除了第一次切换到某个选项卡外,当最初触发ViewDidLoad时,切换到(重新选择)该选项卡的所有后续操作似乎都不会触发ViewDidLoad,也不会触发任何其他方法。该视图似乎被缓存并立即重新显示,就像用户离开该选项卡时留下的那样。但是,当用户重新选择某个选项卡时,我需要刷新其视图。因此,如果可能的话,我需要以某种方式从视图中触发一个方法,而不需要额外的用户交互(在重新选择选项卡之后) 我知道UITabBarDelegate中有一个方法应该在切换选项卡之前或之后被调用,但我不知道这是否是在重新

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


我知道UITabBarDelegate中有一个方法应该在切换选项卡之前或之后被调用,但我不知道这是否是在重新激活所述选项卡时从选项卡视图中触发方法调用的方法。我不知道如何从代理中访问选项卡视图的已激活实例。这方面的任何指导都会非常有帮助

我在我的一个应用程序中也做了同样的操作,我使用
视图将出现
视图显示
来完成这项操作


似乎每次重新选择选项卡时都会调用它们。(我创建了一个方法
updateView
,该方法在
viewdideappear
方法中被调用)

使用uitabar时,视图将保持活动状态,除非收到内存警告并且必须释放它们。因为它们一直处于活动状态,viewDidLoad只会被调用一次(除非您的视图由于内存警告而被卸载)

每次视图在屏幕上显示时,都会调用ViewWillDisplay和ViewDidDisplay,因此您希望在这里刷新视图或数据

如果希望在用户看到视图之前更新视图中的任何内容,则最好在该实例中使用viewWillAppear。例如,设置UILabels或UITextFields以清除数据。这将防止用户在清除旧数据之前看到其快速闪烁。在此方法中运行任何会占用大量系统资源或需要很长时间的操作(即Web服务)可能会减慢应用程序的速度,并会阻止您同时显示UIActivityIndicator,因为这是在视图实际出现之前


ViewDidDisplay适用于在视图显示后可以更新的任何内容,例如上一个示例中的Web服务。

Aha!我一定是把这两种方法弄混了。@Faizan S.你怎么称呼这种方法?你能再解释一下吗。我希望在切换选项卡时调用web服务。现在我很好奇动画BOOL在这两种方法上的作用。有什么特别的或危险的我应该注意的吗?动画BOOL是当视图出现时,你将如何指示是否有动画发生。视图之间的大多数过渡都包含动画,因此过渡看起来不会有起伏。在应用程序首次启动时显示的第一个视图上不使用动画是更常见的做法。@superjessi。获取web服务响应可以吗?我使用的是xml/soap,我想在切换选项卡时刷新和填充webservice中的数据。