我遇到了 setNeedsDisplay 的问题。我有一个带有很多子 UIView 的 UIView,它们是在 Inteface Builder 中创建的。我还有一个带有 IBAction 的按钮。在这个 IBAction 中,我想重绘/重新加载所有 UIViews(或所有 UIElements,如 UILabel、UIWebView 等..)
我正在这样做,这对我不起作用,不知道为什么..:
//redraw the UIViews
[self.view_card_0 setNeedsDisplay];
[self.view_card_1 setNeedsDisplay];
[self.view_card_stapel setNeedsDisplay];
//other UI Elements
[self.webView_0 setNeedsDisplay];
[self.webView_1 setNeedsDisplay];
[self.webView_stapel setNeedsDisplay];
[self.lblCardTitle_0 setNeedsDisplay];
[self.lblCardTitle_1 setNeedsDisplay];
[self.lblCardTitle_stapel setNeedsDisplay];
[self.img_card_0 setNeedsDisplay];
[self.img_card_1 setNeedsDisplay];
[self.img_card_stapel setNeedsDisplay];
重绘/重载/刷新所有 UIElements/UIViews 和 Subviews 怎么办?
编辑1:
我如何加载视图:
detailViewController = [[DetailViewController alloc]
initWithNibName:@"DetailViewController_iPad" bundle:[NSBundle mainBundle]];
detailviewcontroller 没有 viewcontroller,只有 uiviews,这里是层次结构:
- UIView
——UIViewContainer
——UIView0
——UIView1
——UIViewStapel
我期望做什么:
*我不想重置 UIView,我想更改背景和它们的内容。*
我的详细视图中有很多子视图(uiviews),请参见上面的层次结构。我在 UIViews 中显示内容,内容来自 coreData。
view1 包含 coreData 的当前行。
view0 包含上一行 coreData。
viewStapel 包含下一行 coreData。
使用 IBAction 我想迭代 coreData 行,如果调用该操作,则在当前显示下一行..等等..
在 Log 中,数据会发生变化,但不会显示在 UIViews 中。原因是我需要重绘或重新加载或类似的东西,以显示当前数据。
编辑2:已解决
我已将代码放入一个新方法中,调用此方法解决了我的问题。