0

cellユーザーがで(選択しないで)を強調表示するたびにメソッドを起動したいと思いますUITableView。教えていただけますか、どうすればこれが可能ですか?

写真付きのカスタムセルがあり、ユーザーがセルを強調表示するたびに写真を変更したいので、これを実行したいと思います。

UPD:ハイライトとは、ユーザーがセルをハイライトするだけで、セルから指を離さないことを意味します。選択とは、didSelectRowAtIndexPathが起動されているときを意味します(つまり、ユーザーがセルを押した後、セルから指を離します)

4

3 に答える 3

2

ユーザーがセルを「選択」するのではなく、「ハイライト」することをどのように想定しますか?

iOS(または実際にはタッチベースの環境)では、セルを選択するのではなく、単にセルを強調表示するという概念はありません。ユーザーがセルに触れたときに取得する唯一のコールバックは、didSelectRowAtIndexPathです。

ここの表のドキュメントを読む価値があるかもしれません。

更新

ああ、その場合は、セルのimageViewのhighlightedImageプロパティを次のように設定します。

cell.imageView.image = [UIImage imageNamed:@"normal_image.png"];
cell.imageView.highlightedImage = [UIImage imageNamed:@"highlighted_image.png"];
于 2012-09-28T14:55:57.480 に答える
0

私はあなたの質問を理解しませんでした..あなたはメソッドselectRowAtIndexPathを使いたくないですか?

ユーザーが行を選択したときにメソッドを実行する場合:

-メソッドselectRowAtIndexPathを使用して、メソッドを実行できます。

セル内に非表示のUIButtonを作成することもできます。セルをクリックすると、ボタンをクリックしてメソッドを実行します。。。

于 2012-09-28T14:59:18.420 に答える
0

iOS 6.0以降、UITableViewDelegateには、セルの強調表示を処理する3つのメソッドがあります。

- tableView:shouldHighlightRowAtIndexPath:
- tableView:didHighlightRowAtIndexPath:
- tableView:didUnhighlightRowAtIndexPath:

この例のように、それらを使用する必要があります。

- (BOOL)tableView:(UITableView*)tableView shouldHighlightRowAtIndexPath:(NSIndexPath*)indexPath
{
    return YES;
}

- (void)tableView:(UITableView*)tableView didHighlightRowAtIndexPath:(NSIndexPath*)indexPath
{
    MyTableViewCell* cell = (MyTableViewCell*)[tableView cellForRowAtIndexPath:indexPath];
    cell.myImageView.image = [UIImage imageNamed:@"myCellHigh"];    
}

- (void)tableView:(UITableView*)tableView didUnhighlightRowAtIndexPath:(NSIndexPath*)indexPath
{
    MyTableViewCell* cell = (MyTableViewCell*)[tableView cellForRowAtIndexPath:indexPath];
    cell.myImageView.image = [UIImage imageNamed:@"myCellUnhigh"];  
}
于 2015-05-18T14:56:52.303 に答える