0

私はUITableVIewテーブルを持っています。

ProtocolのメソッドtableView:commitEditingStyle:forRowAtIndexPath:に削除を実装しました。UITableViewDataSource

ここではすべて正常に動作します。件名に関する有用な質問はこちらコアデータを使用したアニメーションでテーブル行を削除しています

しかし、すべてのセルにはカウントダウンするタイマーが表示されており、これに問題があります。

NSTimerは次のように使用します:

timer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self
    selector:@selector(updateTickerHandler:) userInfo:nil repeats:YES];

...

- (void)updateTickerHandler:(NSTimer*)timer
{
    [tableView reloadData];
}

ユーザーがタイマーを削除するためにスワイプすると、「削除」ボタンが[tableView reloadData];呼び出されると消えます。

ユーザーが「削除」でスムーズにスワイプできるように、表のセルにタイマーのカウントダウン値を更新する機能を実装したいと考えています。

これを達成する方法は?

4

2 に答える 2

3

呼び出しで動作する動作を取得できませんでした:

[tableView reloadData];

実際の解決策は、セル コンポーネントを手動で更新し、呼び出しを行わないことです。[table reloadData]

のコードはupdateTickerHandler:、次の方法で更新できます。

- (void)updateTickerHandler:(NSTimer*)timer
{
    [tableView beginUpdates];


    // select visible cells only which we will update 
    NSArray *visibleIndices = [tableView indexPathsForVisibleRows];

    // iterate through visible cells
    for (NSIndexPath *visibleIndex in visibleIndices)
    {
        MyTableCell *cell = (MyTableCell*)
            [tableView cellForRowAtIndexPath:visibleIndex];

        // add here code to fill `cell` with actual values
        // visibleIndex can be used to retrieve corresponding data

        ...
    }

    [tableView endUpdates];
}
于 2013-05-26T18:44:13.937 に答える