2011-09-19 204 views
0

我遇到了UIButton奇怪的問題。我已經設置了狀態爲UIControlStateHighlighted的背景圖像,但背景圖像不會改變,我點擊它。目標/選擇器仍然被調用,但是,如果我刪除目標/選擇器,那麼它的工作就好了。UIControlStateHighlighted奇怪的問題

這裏是我的代碼:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(currentXPos, 0, minWidth + additionalSpacing, self.bounds.size.height)]; 
    [button setBackgroundImage:[UIImage imageNamed:@"cellBackgroud.png"] forState:UIControlStateNormal]; 
    [button setBackgroundImage:[UIImage imageNamed:@"cellBackgroudSelected.png"] forState:UIControlStateHighlighted]; 
    [button setTitle:text forState:UIControlStateNormal]; 
    [button setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal]; 
    [[button titleLabel] setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:14]]; 
    [button setTag:i]; 
    [button addTarget:delegate action:@selector(topCellPressed:) forControlEvents:UIControlStateHighlighted]; 
    [self addSubview:button]; 

我一直停留在這一段時間,所以任何幫助將不勝感激...謝謝!

+0

我懷疑它應該像[button addTarget:self action:@selector(topCellPressed :) forControlEvents:UIControlStateHighlighted]; –

+0

但我不想要自我,我想要代表。正如我所說的,該方法在代理中被調用就好了。 – 0xSina

+0

然後檢查cellBackgroudSelected.png圖像在你的資源文件夾 –

回答

1

您的目標名稱使用了錯誤的類型。你想要一個UIControlEvent而不是一個UIControlState。你現在設置你的按鈕的東西是垃圾,因爲控制狀態是一個非常不同的位掩碼來控制事件。

名義上的按鈕按下你想UIControlEventTouchUpInside

[button addTarget:delegate action:@selector(topCellPressed:) forControlEvents:UIControlEventTouchUpInside]; 

林驚訝給你一個有關此警告編譯器處理不當。

+0

好抓沃倫...! – samfisher

+0

發揮很好,玩家。 – 0xSina