0

私はUITableView次のレイアウトで持っています

TableView
 -> CustomCell
 --> CustomLabel

@property (nonatomic) bool animated;私のカスタムラベルには、プロパティがYESの場合はアニメーション化されたコンテンツを描画し、そうである場合はアニメーションなしでコンテンツを描画する描画コードがありますNO

デフォルトbool animatedNOです。

したがって、テーブルビューが最初にデータをロードしてセルを再描画すると、コンテンツはアニメーションなしで描画されます。

今、これは私が動けなくなるところです。

私が求めている効果は、ユーザーがセルをクリックすると、セルのデータが更新され、コンテンツが再描画されてアニメーション化されることです。

私はこのようにこれをトリガーします、

[sender setTitle:newValue forState:UIControlStateNormal];
cell.noteTitle.animated = YES;
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:pathOfTheCell, nil] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];

問題は、私が設定している間、

cell.noteTitle.animated = YES;

私が電話するとき

cell.noteTitle.animated = YES;

CustomCellこれは、上記で説明したように、の新しいインスタンスを作成するようanimated = NOです。

だから私の質問はこれです、どうすれば私のカスタムセルを描画することができますか?テーブルがセルをロードするときはアニメーション化されませんが、ユーザーがセル値を変更するときにアニメーション化されます。

4

3 に答える 3

0

このコードは問題を分析するのに十分ではありません。

私が得たものに従って、あなたはこれを試すことができます

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    // Do your work "[sender setTitle:newValue forState:UIControlStateNormal];" 
    [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:pathOfTheCell, nil] withRowAnimation:UITableViewRowAnimationNone];
}

注:正解にはさらにコードが必要です

于 2013-01-10T09:31:31.593 に答える
0

行インデックスのセルからセルをフェッチして、そのセルを操作してみることができます。

CustomCell * cell = [self.tableView cellForRowIndex:index]; //this will reference that cell
cell.noteTitle.animated = yes;
[self.tableView reloadData];
cell = nil;
于 2013-01-10T09:42:27.490 に答える
0

この質問を書き直しているときに、答えに出くわしました。

現在didSelectRowAtIndexPath選択されているパスを保存し、次に

cellForRowAtIndexPath選択したセルに現在のセルが描画されているかどうかを確認し、それに応じてアニメーションプロパティを設定します

if ([indexPath isEqual:self.currentSelectedIndexPath]){
    cell.noteTitle.animated = YES;
}else{
     cell.noteTitle.animated = NO;
}

助けてくれてありがとう、私は元の質問にもっとコードを含めるべきだったことに気づきました

于 2013-01-10T09:50:06.237 に答える