1

行を選択すると、次のメソッドが呼び出されます。

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

    [_historyEntryTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                                  withRowAnimation:UITableViewRowAnimationFade];
}

私の cellForRowAtIndexPath から、UILabel のアルファ値を動的に設定しています。

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

    static NSString *Cell = @"StandardCell";

    TWHistoryViewStandardCell *cell =
    (TWHistoryViewStandardCell *)[tableView dequeueReusableCellWithIdentifier:Cell];

    if (cell == nil) {
        cell = (TWHistoryViewStandardCell *)[[[NSBundle mainBundle] loadNibNamed:@"HistoryViewStandardCell" owner:self options:nil] objectAtIndex:0];
    }

    //...

    if (currentPick == PickDateFrom) {
        cell.hoursLabel.alpha = 1.0;
    } else {
        cell.hoursLabel.alpha = 0.7;
    }

    //...

}

didSelectRowAtIndexPath メソッドから、テーブル ビューで reloadData を呼び出すと、更新されたセルが期待されるアルファ値でテーブルに表示されます。しかし、reloadRowsAtIndexPath は何の効果もありません。

これが起こっている理由は何ですか?

編集:

reloadRowsAtIndexPath の後に reloadData を呼び出すことによる「ハンマー修正」:

[_historyEntryTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                              withRowAnimation:UITableViewRowAnimationFade];
[_historyEntryTableView reloadData]; 

それは実際には質問に対する答えではありませんが、今のところはそうです。

アルファ値を再レンダリングするために呼び出さなければならないものがセルにあるかどうか誰かが知っていますか? テキストは正しく変更されるため、これは UILabel の単なるアルファ値です。

ありがとうございました!

4

0 に答える 0