我有一个带有子视图的VC。在subview level
我有一个按钮。我希望按钮导致视图更新。
IBAction
代码在VC中。它目前所做的只是切换BOOL
值。
返回子视图drawRect:方法是测试BOOL
并相应更改视图的代码。
我的观察是,当按下按钮时,IBAction代码会运行,切换BOOL
,但drawRect:
方法不会被调用。
我尝试手动调用drawRect(不是很好的做法而且没有用)。我尝试调用setNeedsDisplay,但这也没有用(无法弄清楚如何引用以编程方式创建的子视图)。
建议欢迎。
IBAction代码很简单,但包含在下面:
- (IBAction)rotateWindowButtonWasPressed:(id)sender
{
// just flip the boolean here. Need to make the code change in drawRect: in top2View.m
if ([myGlobals gWinVertical])
[myGlobals setGWinVertical:NO];
else
[myGlobals setGWinVertical:YES];
// Hoping this would force a redraw, but bounds have to change...:(
//_top2ViewOutlet.contentMode = UIViewContentModeRedraw;
}
答案 0 :(得分:10)
发出drawRect调用,在您更改的视图上调用setNeedsDisplay
..操作系统将在其上调用drawRect并自动影响重叠视图。
在你的情况下我认为
[self.view setNeedsDisplay]
答案 1 :(得分:0)
不确定发生了什么 - 上面有一个答案解决了我的问题,但现在它已经消失了?无论如何 - 答案是以编程方式创建按钮,然后我可以在drawRect:的子视图级别包含该方法,并使用setNeedsDisplay重新绘制屏幕。这与使用IB并在VC级别拥有IBAction代码相比。