1

私は現在、 AVQueuePlayerのインスタンスを使用してカスタムUITableViewCell内でビデオが再生されるiOS5以降用のアプリを開発しています。

'n'個のビデオを再生するそのようなカスタムセルが'n'個あります。

一定時間後にプレーヤーがビデオを再生できないようにする機能を実装したいと思います。

AVQueuePlayerのインスタンスの下にあるプレーヤーを無効にするためにUILabelに残っている時間を表示するカウントダウンタイマーがあります。

無効化が行われるまでの残り時間を表示するために、1分後にタイマーを更新する必要があります(想定)。例:「残り5分」

私はこの目的のためにNSTimerを使用しています。しかし、カスタムUITableViewCellのUILabelインスタンスのみをリロードまたは更新する方法がわかりません。私はいくつかのスレッドで次の方法の使用を見てきました

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

しかし、ビデオの再生中にそうすると、ビデオは停止し、再びリロードされます。

この問題に対するより良い解決策はありますか?

4

1 に答える 1

3

作成時にセルへの参照を保存することもできます(テーブルビューがあるにもかかわらず、各セルタイプを1つだけ作成しているように聞こえます)。または、テーブルからセルをつかみ、そこからラベルを引き出します。

ラベルのタグを設定し、それを使用してラベルを元に戻したいと思います。

ラベルを作成する(またはインターフェイスビルダーで設定する)ときに呼び出します[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 から ...); andLABEL_TAGは、そのビューを表すために使用する任意の数字です。おそらく1234.

于 2013-01-28T14:37:47.397 に答える