我正在开发一个iPhone应用程序,我有一个UIViewController
类,其中有一些coverflow动画,根据设计,我的视图顶部有5个按钮,每个按钮都有一个IBAction
方法在单击按钮时,我需要显示具有不同数据的不同覆盖流集,并且覆盖流的计数也从1按钮动作变为另一个。我的问题是如何在点击这些按钮时刷新我的页面(重新加载),因为我知道明确调用viewDidLoad
是一个非常糟糕的主意,所以我该如何实现这一目标?任何帮助都会提前感谢,谢谢。
答案 0 :(得分:6)
获取视图重绘自己的最简单方法是调用[UIView setNeedsDisplay]或使用[UIView setNeedsDisplayInRect]。此方法告诉视图它需要重新绘制自己及其子视图。但是你不应该总是这样打电话。还有其他方法可以导致视图重绘自己。例如,如果使用[UIView addSubview:]或[UIView removeFromSuperview]向视图层次结构添加或删除视图。
这些方法会导致系统调用视图的drawInRect:方法(假设您使用自定义绘图代码覆盖它)。如果您没有为自定义绘图覆盖此方法,则应该使您的子视图接收相同的消息,以便他们有机会重绘。
此处提供更多信息。具体阅读标有“视图绘制周期”的部分。
答案 1 :(得分:3)
为什么要重新加载页面?如果是因为您要更改视图并希望重新绘制视图,则可以调用:
setNeedsDisplay();
但通常不需要这样做,因为每当视图边界发生变化时,会自动为您调用。
答案 2 :(得分:1)
如果有太多其他内容而不是刷新/重新加载您在viewDidLoad方法中感兴趣的部分,则可以将刷新部分提取到私有方法中,例如methodA。每次单击按钮时,都会调用该方法A.但是我觉得methodA仍然需要调用setNeedsDisplay或者重新绘制你感兴趣的部分。希望它有所帮助。
答案 3 :(得分:1)
如果你要点刷“UIViewController”,那么:
[self viewDidLoad];
答案 4 :(得分:0)
To Refresh your UIViewController, When Clicking the button >>
Add the below code into your UIButton method,
-(IBAction)button:(id)sender{
[self viewDidLoad];
[self viewWillAppear:YES];
}
Now Build and Run Your Code.
答案 5 :(得分:-9)
使用函数viewWillAppear()。每次调用视图时都会调用此函数。