2

私はcustomCell(2つのラベルと1つのImageViewを持つCustomCell)でUITableViewを持っています。

通常モードでは、すべてのセルの白色が必要です。

ユーザーが特定のセルを押すと、そのセルの色は灰色になります (残りのセルは白になります)。

ユーザーが同じセルを離すと、そのセルの色はオレンジ色になります (残りのセルは白になります)。

どうすればそれを理解できますか?

setSelectedBackground、willSelectRowAtIndexPath、および Gestures メソッドを使用してこれを試しました。しかし、同じセルに対してこれら 3 つの色の状態を確認することはできません。2つの州のいずれかが協力しています。

どうすれば同じ機能を実現できますか?

セレクターを使用して Android に同じ機能を実装しました。iPhoneでも同じ機能が欲しい。ヘルプはありますか?

前もって感謝します!

4

3 に答える 3

7

これらの 2 つのメソッドをカスタム セルに記述します。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    self.contentView.backgroundColor=[UIColor greenColor];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    self.contentView.backgroundColor=[UIColor orangeColor];

}
于 2013-03-04T10:59:01.937 に答える
3

グレーが欲しいなら

cell.selectionStyle=UITableViewCellSelectionStyleGray;  

または、背景色をオンに設定できますdidSelectRow

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView reloadData];
    UITableViewCell *cell=(UITableViewCell*)[tableView cellForRowAtIndexPath:indexPath];
    [cell setBackgroundColor:[UIColor orangeColor]];
}  

tableData をリロードしたくない場合は、previousSelected インデックス値を保存してから保存する必要があります

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //Make oreange cell
    UITableViewCell *presentCell=(UITableViewCell*)[tableView cellForRowAtIndexPath:indexPath];
    [presentCell setBackgroundColor:[UIColor orangeColor]];

    //make your previous cellBackgrod to clear, you can make it white as per your requirement
    UITableViewCell *previouscell=(UITableViewCell*)[tableView cellForRowAtIndexPath:previousSelectedCellIndexPath];
    [previouscell setBackgroundColor:[UIColor clearColor]];

    //save your selected cell index
    previousSelectedCellIndexPath=indexPath;
}
于 2013-03-04T10:48:05.157 に答える