2012-03-19 135 views
0

我在不同的xib上有兩個類,一個具有窗口和滑塊(控制器1),另一個具有窗口和視圖(控制器2)。控制器1是第一個xib的文件所有者,控制器2是NSView的一個類。我想要做的是當我移動滑塊時,我想改變NSRect的顏色。從另一個類中繪製矩形

在控制器1我有滑塊動作:

-(IBAction)moveSlider:(id)sender 
{ 
    Controller2 *view = [[Controller2 alloc] init]; 
    [view redraw]; 
} 

和在控制器2我有平局RECT和我的方法重新繪製。

- (id)initWithFrame:(NSRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     RectColor = [NSColor blackColor]; 
    } 

    return self; 
} 

-(void) redraw 
{ 
    NSLog(@"changed"); 
    RectColor = [NSColor blueColor]; 
    [self setNeedsDisplay:YES]; 
} 


- (void)drawRect:(NSRect)rect 
{ 
    [RectColor set]; 
    NSRectFill(rect); 

} 

奇怪的是當我有我的行動和滑塊在同一個xib作爲我的看法與繪製矩形它工作得很好。然而,當我在另一個xib滑塊,它不會工作。有任何想法嗎?謝謝!

+0

在'moveSlider:'動作方法中,您每次都在創建'Controller2'。是否需要這種情況? – Ilanchezhian 2012-03-19 04:25:39

+0

以及我不相信它的要求,我導入該文件,但這只是我知道如何調用方法的唯一方法 – 2012-03-19 04:28:00

回答

1

在Controller1中,moveSlider:方法每次調用時都會創建一個Controller2的新實例。 Controller1需要保留對現有Controller2的引用,並在該實例上調用redraw方法。

+0

好吧,這絕對有道理,但我將如何編碼?對不起,我是xcode的新手,從我擡頭看我會需要一個代表或我該怎麼做? – 2012-03-19 04:32:28

+0

究竟如何取決於您的應用程序。一種方法是將一個屬性添加到'Controller2'類型的'Controller1'中,並使用任何對象創建'Controller2'來設置它。 – 2012-03-19 04:37:50