【问题标题】:Reload only a subView of a custom UITableViewCell仅重新加载自定义 UITableViewCell 的子视图
【发布时间】:2013-01-28 14:22:20
【问题描述】:

我目前正在为 iOS 5 及更高版本开发一个应用程序,其中使用 AVQueuePlayer 实例在 自定义 UITableViewCell 内播放视频。

有“n”个这样的自定义单元格播放“n”个视频。

我想实现一个功能,在给定时间后禁用播放器播放视频。

我有一个倒数计时器,它显示 UILabel 中剩余的时间,用于禁用 AVQueuePlayer 实例下方的播放器。

我必须在一分钟后更新计时器(假设)以显示禁用发生的剩余时间。例如“还剩 5 分钟”

我为此目的使用 NSTimer。但是,我不知道如何仅重新加载更新自定义 UITableViewCell 的 UILabel 实例。我在一些线程中看到了以下方法的使用

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

但是,如果我在播放视频时这样做,它会停止并再次重新加载。

这个问题有更好的解决方案吗?

【问题讨论】:

    标签: ios ios5 uitableview


    【解决方案1】:

    您可以在创建单元格时保存对单元格的引用(听起来您只制作了每种单元格类型中的一种,即使您有一个表格视图);或从表格中取出单元格并将标签拉出。

    我很想设置标签的标签,然后用它来取回标签。

    当您创建标签(或在 interface-builder 中设置)时调用 [myLabel setTag:LABEL_TAG];

    然后你可以:

    UITableViewCell * myCell = self.myTableView cellForRowAtIndexPath:LABLE_CELL_POSITION];
    UILabel * myLabel = [cell viewWithTag:LABEL_TAG];
    myLabel.setText:@"my new value";
    

    在上面的LABLE_CELL_POSITION 将是表格视图中单元格的位置(0 到 ...); LABEL_TAG 是您想用来表示该视图的任何数字,可能是 1234

    【讨论】:

    • 但是 cellForRowAtIndexPath 将 NSIndexPath 的对象作为参数。我是否应该保存 IndexPath 对象,然后将其传递给此方法以获取 UITableViewCell?
    • 啊,那就建个索引路径吧。您可以将 LABEL_CELL_POSITION 替换为 [NSIndexPath indexPathForRow:LABEL_CELL_POSITION inSection:0]。你的目标是得到你的 UILabel。因此,使用上面的方法获取单元格,然后向单元格询问标签(通过 viewWithTag 或类似方法)。如果以相同的方式构建表,则可能不需要“保存”索引路径。你会知道你想要的单元格是 0(或 1,或 2...)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多