2012-01-16 18 views
2

UITableViewCell内でUIButtonを使用しています。このボタンは、以下のように選択できます。UITableViewCellが選択されたときにUIButtonが覆われる

enter image description here

問題は、セルが選択され、これまでと、ボタンが選択されているかどうかに関係なく、それは灰色に変わりますということである(この灰色はの非選択モードのグレー色とは異なっていますスター)。私はこれがなぜ起こるか把握しようとしていたが、運がなかった。ここ

enter image description here

電池はボタンが完全に消えます選択されたとき、私はボタンをタップしたときにも

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];  
UIButton *button = [[UIButton buttonWithType:UIButtonTypeCustom]retain]; 

//set the background of the cells 
cell.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed: @"cellBackground.png"]]; 
cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellselected2.png"]]; 

// set the button content 
[button setImage:[UIImage imageNamed:@"star.png" ] forState:UIControlStateNormal]; 
[button setImage:[UIImage imageNamed:@"starSelected.png"] forState:UIControlStateSelected]; 
[button addTarget:self action:@selector(selectedButton:) forControlEvents:UIControlEventTouchUpInside]; 
[button setFrame:CGRectMake(280, 10, 24, 24)]; 

[cell addSubview:button]; 

return cell; 
} 

、細胞の実装です!

ありがとうございます、

答えて

6

私は問題が何であるかを考え出し。問題は、セルが選択されると、セル内のUIButtonが「強調表示された状態」に移動することです。ボタンの強調表示された状態に使用するように割り当てられた画像がない場合、それは私の場合と同じように見えます。だから私はちょうど私がUIButton上で使用することがしたい画像を追加することによって、それを修正

は、

[button setImage:[UIImage imageNamed:@"starSelected.png"] forState:UIControlStateHighlighted]; 

を状態を強調し、これは同じ問題に直面している他の人に役に立てば幸い:)

+0

あなたの質問にあなた自身の答えを受け入れることは大丈夫です。 –

1

あなたはcontentViewではなくセルフレームにボタンを追加しています。

UITableViewCellは、セルが選択されている場合にのみ、このプロパティの値をサブビューとして追加します。選択された背景ビューがバックグラウンドビュー(backgroundView)の直上のサブビューとして追加されます(nilでない場合、または他のすべてのビューの背後にある場合)。 UITableViewCellは、他のすべてのビューの背後にあるサブビューとしてバックグラウンドビューを追加し、現在のフレーム位置を使用します。

[cell.contentView addSubview:favButton]; 

[cell addSubview:favButton]; 

を交換し、それはそれを解決する必要があります。

UITableViewCellオブジェクトのコンテンツビューは、セルによって表示されるコンテンツのデフォルトのスーパービューです。追加のビューを追加するだけでセルをカスタマイズする場合は、ビューをコンテンツビューに追加して、セルが編集モードに出入りする際に適切に配置されるようにする必要があります。

それはすべてAppleDocs ^^

文献にあります:http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html

+0

残念ながらこれで解決できませんでした – Mona

+1

@Mona [cell bringSubviewToFront:button]を追加するとどうなりますか?選択後またはセル[セルsendSubviewToBack:cell.selectedBackground]; ? –

+0

動作しませんでした。おかげで – Mona

1

ます強調表示された状態の画像を確実に設定することができる。別のオプションとして、UIControlStateNormalUIControlStateHighlightedに同じ画像を使用する場合は、 button.adjustsImageWhenHighlighted = NOと言うこともできます。デフォルトはYESです。

+0

これは私にとってはうまくいかなかった。画像がありません(背景色のみ)、セルが選択されるとボタンも選択されます。私はcontentViewにボタンを追加しました – Darren

関連する問題