2009-06-17 45 views
0

我有一個UIView子類,我操縱了很多基於觸摸的圖形。所有[self setNeedsDisplay]調用似乎都很好。但是,我使用了一個實例變量指針指向我的同一個UIView子類實例,然後嘗試操作它,然後從另一個UIView類調用[UIViewSubClass setNeedsDisplay],並且DrawRect從不被調用。是否有限制,你可以從哪裏調用setNeedsDisplay?從另一個類的UIView調用setNeedsDisplay

(當被點擊另一個UIView子類的按鈕時調用此方法的方法被調用,但不能的drawRect。)

-(IBAction)loadGrid2; 
{ 
    tempSoundArray = musicGridView1.soundArray; 
    [musicGridView1.soundArray setButtonArrayToNull]; 
    [musicGridView1 setNeedsDisplay]; 
    musicGridView1.soundArray = tempSoundArray; 
    NSLog(@"loadGrid2 was called"); 
} 

回答

1

的drawRect:當它是有意義纔會被調用;即視圖必須是可見的,屏幕上的和髒的。您的drawRect:有沒有叫?當視圖首次出現在屏幕上時也應該調用它。

1

要添加到本: 這很可能意味着你在其他地方有問題。您的指針可能不是零或無效,或者視圖可能無法正確添加到層次結構中。

你可能想要考慮不在視圖內處理這種類型的行爲,而是在視圖控制器中。控制行爲並在視圖控制器中保存呈現狀態,並且不要繼承視圖類。它將簡化您的代碼,減少「指針傳遞」。這也將使調試這種類型的問題更容易。

如果您覺得您的視圖控制器變得臃腫,請考慮在多個視圖控制器中分擔責任。