0

TableViewでいくつかのUILabelを使用してカスタムセルを使用しています。選択/ハイライト表示時に色を変更する必要があります。

1)tableviewWillDisplayCellを使用する必要がありますか?2)その中で選択/強調表示されたセルを区別する方法は?

4

3 に答える 3

1

ハイライト/選択の検出については何もする必要はありません。UITableViewCellは、選択されると、そのすべてのサブビュー(強調表示できるサブビュー)を自動的に強調表示します。UILabel、強調表示できるビューです。つまり、highlightedプロパティがあり、強調表示に自動的に応答します。

したがって、あなたがするべき仕事はありません。あなたは問題を考えすぎています。各ラベルのhighlightedTextColorプロパティを設定するだけで、すべてが自動的に行われます。別の答えが指摘しているように、これはペン先で行うことも、コードで行うこともできます。

セルが選択されたときに何か特別なことをする必要がある場合、最も簡単な方法はUITableViewCellサブクラスを使用してオーバーライドすることsetSelected:animated:です。しかし、あなたの場合、これは必要ないようです。

于 2012-11-25T16:45:04.177 に答える
0

ペン先にUILabelのハイライトカラーを設定するだけです。インターフェイスエディタでラベルを選択すると、右側のパネルにハイライトされた色を変更するオプションが表示されます(私はMacを使用していないため、より正確な手順を説明することはできません)。

見つからない場合は、コードの色を変更してください。次のようなものを使用して、そのラベルのテキストを変更するとします。

myLabel.text = @"something";

ハイライトされたTextColorを設定するだけです。

myLabel.highlightedTextColor = [UIColor redColor];
于 2012-11-25T12:12:47.883 に答える
-1

まず最初に、あなたは自分の細胞を正しい方法で見ることができますか?カスタムセルを作成した場合は、次のようにします。

    // Customize the appearance of table view cells.
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

        static NSString *CellIdentifier = @"MyCustomCell";

        MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];


        if (cell == nil) { 
            NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyCustomCell"
                                                 owner:self options:nil];
            for (id oneObject in nib) if ([oneObject isKindOfClass:[MyCustomCell class]])
        cell = (MyCustomCell *)oneObject;
        } 

        // Set up the cell
        //...

        return cell;
    }

今あなたの質問に関して、

1-) uitableviewcellの背景を処理する必要がある場合は、 tableviewWillDisplayCellメソッドを使用するため、これはあなたが探しているものではない可能性があります

2-)特定のtableViewCellを選択すると、そのセルが選択されます(デフォルトでは青色のままになります)。したがって、最後に選択したセルだけを選択する場合は、次を使用する必要があります。

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    //...

    // do your stuff

}

カスタムの外観にハイライトメソッドを使用する場合は、[tableView deselectRowAtIndexPath:indexPathアニメーション:YES]を追加する必要があります。didSelectRowAtIndexPathに移動してから、tableViewCellのUIを変更します。また、セルが選択されている場合は、indexPath.rowをNSMutableArrayなどのデータ構造に保存でき、didSelectRowAtIndexPathメソッドでその操作を行う必要があります。

これがお役に立てば幸いです。さらにサポートが必要な場合は、お知らせください。

ホルヘ

于 2012-11-25T16:23:52.060 に答える