多くの行を含む iPhone アプリケーションで tableView をセットアップしている場合、それらの行の 1 つだけを更新するにはどうすればよいですか? それらが表示されると手動で更新されることは承知していますが、タイマーのカウントダウンの議論のために、更新をプッシュしようとしています。
ありがとう
多くの行を含む iPhone アプリケーションで tableView をセットアップしている場合、それらの行の 1 つだけを更新するにはどうすればよいですか? それらが表示されると手動で更新されることは承知していますが、タイマーのカウントダウンの議論のために、更新をプッシュしようとしています。
ありがとう
答えてくれてありがとう、でも別の方法を見つけました!
これを呼び出すことにより:
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 を呼び出すだけで、カスタム ラベルが原因で実行時エラーが発生していました。:(
呼び出すことで、単一の行をリロードできます
- (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
ある種のカスタムUITableViewCellを使用していると思います...。
私が通常行うことは、カスタムUITableViewCellsの配列を作成し、それらからUITableViewにデータを入力することです。このようにして、基になるオブジェクト(この場合はUITableViewCellのタイマープロパティ)を更新し、UITableViewを更新できます。
あなたはそれに直接アクセスできるかもしれません(実際のiphone構文の欠如を許してください..それは数ヶ月です)
直接アクセスできるかもしれませんが、その方法で問題が発生しました。
[[[myUITableView cells] itemAtIndex:14] setTimerValue:WHATEVER];