5

如果我在具有多行的 iPhone 应用程序中设置了 tableView,我如何只更新其中的一行?我知道他们在进入视野时会手动刷新,但我希望推出更新,为了争论计时器倒计时。

谢谢

4

3 回答 3

15

感谢您的回答,不过我找到了另一种方法!

通过调用这个:

NSIndexPath *a = [NSIndexPath indexPathForRow:0 inSection:0]; // I wanted to update this cell specifically
CustomTableViewCell *c = (CustomTableViewCell *)[theTableView cellForRowAtIndexPath:a];

然后我可以直接修改存储在我的 CustomTableViewCell 中的标签,如下所示:

[c nowPlayingTrack].text = ...

希望有一天这对其他人有所帮助!

我不知道为什么,但由于自定义标签,只是在 tableView 上调用 reloadData 会导致运行时错误。:(

于 2010-08-27T08:48:07.193 回答
3

您可以通过调用重新加载单行

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

对于 indexPaths,您必须创建一个包含要重新加载的行的 indexPath 的数组。行动画仅描述是否以及如何重新加载行,有或没有动画:

typedef enum {
   UITableViewRowAnimationFade,
   UITableViewRowAnimationRight,
   UITableViewRowAnimationLeft,
   UITableViewRowAnimationTop,
   UITableViewRowAnimationBottom,
   UITableViewRowAnimationNone,
   UITableViewRowAnimationMiddle
}

如果不知道 indexPath,可以调用

+ (NSIndexPath *)indexPathForRow:(NSUInteger)row inSection:(NSUInteger)section
于 2010-08-26T16:25:19.060 回答
1

我假设您正在使用某种类型的自定义 UITableViewCell ....

我通常做的是创建一个自定义 UITableViewCells 的数组,并从中填充我的 UITableView。这样,我可以刷新底层对象(在本例中是您的 UITableViewCell 的计时器属性)并刷新 UITableView。

您也许可以直接访问它(请原谅我缺乏实际的 iphone 语法.. 已经几个月了)

您可能可以直接访问它,但我在这样做时遇到了问题。

[[[myUITableView cells] itemAtIndex:14] setTimerValue:WHATEVER];
于 2010-08-26T16:21:25.730 回答