2013-02-26 33 views
1

我有一个VC子视图。在subview level我有一个按钮。我希望按钮导致视图被更新。按钮来触发drawRect重绘视图

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

漂亮的捷径:[myGlobals setGWinVertical:![myGlobals gWinVertical]]; – 2013-02-26 14:26:42

+0

谢谢slugster :) – Tony 2013-02-27 03:43:00

回答

0

不知道发生了什么 - 有一个答案上面解决了我的问题,但现在它走了吗?无论如何 - 答案是以编程方式创建按钮,然后我可以在drawRect:所在的子视图级别包含该方法,并使用setNeedsDisplay重新绘制屏幕。这与使用IB并在VC级别具有IBAction代码相对。

10

发出的drawRect电话,你改变了..操作系统将调用它的drawRect,并自动影响重叠视图的视图调用setNeedsDisplay

你的情况,我认为

[self.view setNeedsDisplay]

相关问题