我有以下代码,在布尔值为真之后,我想向我的矩形添加图形。这是我的代码,但是由于某种原因,它要么没有设置布尔值,要么没有调用setNeedsDisplay。我是否正确地参考了另一堂课?谢谢

//在AppController.m中

-(IBAction)colorToggle:(id)sender
{
    if ([colorFilter state] == NSOnState)
    {
        CutoutView *theView = [[CutoutView alloc] init];
        [theView setFilterEnabled:YES];

    }


}

//在cutoutView.m中

- (void)drawRect:(NSRect)dirtyRect
{
    [[[NSColor blackColor]colorWithAlphaComponent:0.9]set];
    NSRectFill(dirtyRect);

    //this is what i want to be drawn when my bool is true and update the drawRect
    if (filterEnabled == YES) {
        NSRectFillUsingOperation(NSMakeRect(100, 100, 300, 300), NSCompositeClear);
        [self update];
    }
}

-(void)update
{
    [self setNeedsDisplay:YES];
}

最佳答案

OK,您知道不是每个UILabel都一样吗?就像,您可以从视图中删除一个UILabel,而其他视图也不消失吗?好吧,您的CutoutView是相同的方式。当您在此处写入CutoutView *theView = [[CutoutView alloc] init];时,将创建一个新的CutoutView,该视图不会在任何地方显示。您需要与现有的CutoutView对话(可能是通过连接插座来实现,但是有许多完全有效的设计可以实现此目标)。

关于objective-c - 将Bool设置为不同的类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10004502/

10-10 15:01