4

選択を有効にして使用UITableViewすると、行を選択でき、ハイライトで選択されて表示されます。ただし、2 行目を選択すると、デフォルトで次のようになります。

  1. 行 1 は既に選択されており、強調表示されています。
  2. 行 #2 を指で押し下げます。
  3. 指がまだ押されているので、行 #1 と #2 の両方が目に見えて強調表示されます。
  4. 指を離すと行 #2 が選択され、その行だけが強調表示されます。

私がやろうとしているのは、上記の手順 3 で、両方のセルが同時に強調表示されないようにすることです。これを行うことは可能ですか?

4

4 に答える 4

0

これは機能します

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath{
[self.tableView.delegate tableView:tableView didSelectRowAtIndexPath:indexPath];
return NO;

}

于 2014-11-13T07:02:50.863 に答える
0

次の手順を実行します

  • ストーリーボードでテーブル ビューを選択します
  • 「選択」タイプで「複数選択」ではなく「単一選択」を選択します(属性インスペクターで)

これがあなたを助けることを願っています

于 2014-11-13T07:32:54.950 に答える
-1

OK、ディスカッションに基づいてこの回答を編集しました。

UITableViewCell をサブクラス化すると仮定すると、実装で次のコードを使用します。

(例: CustomTableCell.m)

#define MyTableCellHighlightedNotification @"MyTableCellHighlighted" 

- (id)initWithStyle:(UITableViewCellStyle)style 
    reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if(self){
        // Your custom initialization here

        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(tableCellHighlighted:)
                                                     name:MyTableCellHighlightedNotification
                                                   object:nil];

    }
}

- (void) dealloc
{
    [[NSNotifcationCenter defaultCenter] removeObserver:self];

    // ...Release ivars...

    [super dealloc]
}

- (void) setHighlighted:(BOOL) highlighted
{
    // Default behaviour (defer to super)
    [super setHighlighted:highlighted];

    if(highlighted == YES){
        // De-highlight all other cells
        [[NSNotificationCenter defaultCenter] postNotificationName:MyTableCellHighlightedNotification
                                                            object:self]

    }
}

- (void)tableCellHighlighted:(NSNotification*) notification
{
    // All cells receive this notification

    if([notifcation object] != self){
        // All cells except the notification sender de-highlight themselves
        [self setHighlighted:NO];
    }
}
于 2012-06-15T21:10:32.400 に答える