如何在点击某些按钮时重新加载我的UIViewController?

时间:2011-10-11 11:20:55

标签: iphone objective-c ios xcode ipad

我正在开发一个iPhone应用程序,我有一个UIViewController类,其中有一些coverflow动画,根据设计,我的视图顶部有5个按钮,每个按钮都有一个IBAction方法在单击按钮时,我需要显示具有不同数据的不同覆盖流集,并且覆盖流的计数也从1按钮动作变为另一个。我的问题是如何在点击这些按钮时刷新我的页面(重新加载),因为我知道明确调用viewDidLoad是一个非常糟糕的主意,所以我该如何实现这一目标?任何帮助都会提前感谢,谢谢。

6 个答案:

答案 0 :(得分:6)

获取视图重绘自己的最简单方法是调用[UIView setNeedsDisplay]或使用[UIView setNeedsDisplayInRect]。此方法告诉视图它需要重新绘制自己及其子视图。但是你不应该总是这样打电话。还有其他方法可以导致视图重绘自己。例如,如果使用[UIView addSubview:]或[UIView removeFromSuperview]向视图层次结构添加或删除视图。

这些方法会导致系统调用视图的drawInRect:方法(假设您使用自定义绘图代码覆盖它)。如果您没有为自定义绘图覆盖此方法,则应该使您的子视图接收相同的消息,以便他们有机会重绘。

此处提供更多信息。具体阅读标有“视图绘制周期”的部分。

http://developer.apple.com/library/ios/#documentation/uikit/reference/uiview_class/uiview/uiview.html

答案 1 :(得分:3)

为什么要重新加载页面?如果是因为您要更改视图并希望重新绘制视图,则可以调用:

setNeedsDisplay();

但通常不需要这样做,因为每当视图边界发生变化时,会自动为您调用。

答案 2 :(得分:1)

如果有太多其他内容而不是刷新/重新加载您在viewDidLoad方法中感兴趣的部分,则可以将刷新部分提取到私有方法中,例如methodA。每次单击按钮时,都会调用该方法A.但是我觉得methodA仍然需要调用setNeedsDisplay或者重新绘制你感兴趣的部分。希望它有所帮助。

答案 3 :(得分:1)

如果你要点刷“UIViewController”,那么:

[self viewDidLoad];

来源:How to refresh UIViewController programmatically?

答案 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()。每次调用视图时都会调用此函数。