为什么reloadRowsAtIndexPaths没有重新加载单元格的UILabel alpha值,但是reloadData呢?

时间:2013-07-31 07:43:42

标签: ios objective-c uitableview didselectrowatindexpath

当我选择一行时,会调用此方法:

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

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

从我的cellForRowAtIndexPath,我正在动态设置UILabel的alpha值。

- (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,该表显示更新的单元格,具有预期的alpha值。但是reloadRowsAtIndexPath没有任何影响。

为什么会发生这种情况?

修改

“Hammer Fixed”通过在reloadRowsAtIndexPath之后调用reloadData:

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

这不是问题的答案,但它现在可以做到。

有人知道是否必须调用单元格中的某些内容来重新呈现alpha值?它只是UILabel的alpha值,因为文本确实正确改变了。

谢谢!

0 个答案:

没有答案