2012-05-09 9 views
1

私はTableViewにカスタムセルを持っていて、セルにボタンがあります。セルを選択すると、背景が青色に変わり、ボタンが消えます。これを防ぐ方法はありますか?このようなTableViewのセルを選択中にボタンが消えないようにするにはどうすればよいですか?

cellForRowAtIndexPath - 選択したテーブルセルの

- (UITableViewCell *)tableView:(UITableView *)tableView 
    cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 
MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) 
{ 
    cell = [[MyTableCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
            reuseIdentifier:CellIdentifier]; 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

} 
Search *current = [self.retrievedTweets objectAtIndex:indexPath.row]; 
cell.textLabel.text = current.text; 
cell.textLabel.font = [UIFont systemFontOfSize:15.0]; 
cell.textLabel.numberOfLines = 2; 
cell.detailTextLabel.text = current.name; 
cell.imageView.image = current.userImage; 


btnUncheck =[[UIButton alloc] initWithFrame:CGRectMake(400, 35, 20, 20)]; 


btnUncheck.backgroundColor = [UIColor redColor]; 
btnUncheck.layer.cornerRadius = 10; 
btnUncheck.hidden =NO; 
btnUncheck.tag=indexPath.row; 
//[btnUncheck addTarget:self action:@selector(didSelectRowAtIndexPath:) forControlEvents:UIControlEventTouchUpInside]; 

[cell.contentView addSubview:btnUncheck]; 
return cell; 
} 
+0

どのようにボタンを追加しましたか? – jrturton

+0

'btnUncheck = [[UIButton alloc] initWithFrame:CGRectMake(400、35、20、20)]; btnUncheck.backgroundColor = [UIColor redColor]; btnUncheck.layer.cornerRadius = 10; [cell.contentView addSubview:btnUncheck]; ' –

答えて

1

使用カスタムイメージ。ボタン画像で試してみてください。

+0

私は試しました - btnUncheck.highlighted = NO; btnUncheck.adjustsImageWhenHighlighted = NO;何も働いていない。 –

+0

私はtableviewの選択したビューについて質問しています。青いイメージではなく自分のイメージを設定できます。 – Mangesh

+0

うん!!私もそれをしました。setSelectedメソッドをオーバーライドします。 '(void)setSelected:(BOOL)選択されたアニメーション:(BOOL)アニメーション{ [super setSelected:selected animated:animated]; if([self.accessoryView isKindOfClass:[UIButton class]] { UIButton * button =(UIButton *)self.accessoryView; [[button imageView] setHighlighted:NO]; }} ' –

0

は、デリゲートメソッドが

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

は{

///// your code /////////// 
cell.selectionStyle=UITableViewCellSelectionStyleNone; 
//// your code//////// 

}

ここにあなたの青いbackgoundは表示されません..あなたは何ができるか

+0

私は選択が起こることを望んでいます、私はセル内にボタンを持っています。 –

+0

ちょうどこのコードを試してみてくださいが、あなたのcellIdentifierはゼロでなければなりません。 –

+0

はい、私は試しました。コードは青色を消すことができますが、ボタンは表示されず、表示されません。 –

0

がある、あなたのテーブルビューの行の下に貼り付けますthis:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{[tableView deselectRowAtIndexPath:indexPath animated:YES];} 

希望これは、あなたがすでにこれを実装している場合、他に何あなたがこのデリゲートメソッドを持っているん、また

に役立ちますか?代わりに、この行の

+0

コードを使用すると、青色が表示されて消えます。その後、ボタンが再び表示されます。私が必要とするのは、青色がボタンと共にそこにあることです。つまり、ボタンも選択項目に表示されます。選択肢がなくなることはありません。 –

+0

消滅ボタンのターゲットメソッドとdidSelectRowAtIndexPathメソッドの内部にはどのようなコードがありますか?あなたはあなたの質問にそれらを投稿できますか? – RileyE

0

btnUncheck = [[UIButton alloc] initWithFrame:CGRectMake(400, 35, 20, 20)]; 

使用:

btnUncheck = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; 
[btnUncheck setFrame:CGRectMake(400, 35, 20, 20)]; 
+0

申し訳ありません!それは動作しません。 –

+0

'cellForRowAtIndexPath'メソッドを共有することができれば、より良い結果が得られます。 – ugur

+0

質問と共有しました! –

0

は、背景色をクリアし、それに設定して、 "カスタム" ビューを作成します。

UIView* vista=[[[UIView alloc] init] autorelease]; 
vista.backgroundColor=[UIColor clearColor]; 
cell.selectedBackgroundView=vista; 
0

この権利を修正するには、カスタムセルを作成してから、xibエディタにボタンを追加します。

xibエディタで、 'UITableViewCell'項目を追加します。次に、xibエディタのセル項目にボタンを追加します。

  • (UITableViewCellの*)のtableView:(のUITableView *)のtableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

Iその後、ここで、対応する.mファイル内のテーブルにカスタムセルを接続しますこれを1行のテーブルだけで試してみましたが、カスタムセルはxibからテーブルビューを持つ.hファイルへのプロパティとして結び付けられました。ハイライトはそこにあり、ボタンのグレーだけ(まだ見ることができます)。これをより多くの行で動作させるには、より多くの関与が必要です。カスタムutableviewcell xibをロードして、それを動作させるためにカスタムセルを動的に割り当てる必要があります。

関連する問題