2013-08-26 12 views
7

iPadの連絡先アプリで "+"編集アイコンをタップして新しいアドレスを追加すると、アイコンが消えてもセルは左に拡張されません(下記の第1画面キャプチャを参照)。私は似たようなことをしようとしていますが、幸運を祈ることはありません。私は解決策を使用してみたhereしかし、動作しませんでした。UITableViewでの編集が完了したときにセル幅が拡大するのを防ぐ方法

私は実際の連絡先アプリを複製したり、連絡先と統合しようとしていません。私たちは無関係なものに取り組んでいます。私のデザイナーはこのパターンに従いたいので、POCの仕事をして自分ができることを見ていきたいと思っています。

EDIT - 私の考えを検証するためのもう1つの質問は、ここで連絡先アプリで "+"アイコンをタップすると、このセルがこれ以上編集されないように設定されていることです。セル、ラベルが変更され、次にreloadDataが呼び出されます。

EDIT - 提案をありがとうTim、私はほとんどそこにいる!私は実際にその1/2を試しましたが、 "+"アイコンがアニメーション化されていないという問題に突き当たり、突然消えてしまいました。そこで、reloadRows ... commitEditingStyleの呼び出しを追加しましたが、セル全体が消えます。 - 「+」ボタンがちょうど突然消えた

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCellEditingStyle editingStyle = UITableViewCellEditingStyleNone; 
    if (self.showEditingIcon) { 
     editingStyle = UITableViewCellEditingStyleInsert; 
     self.showEditingIcon = NO; 
    } 
    return editingStyle; 
} 

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // tableView.editing = NO; 
    // tableView.editing = YES; 
    [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
} 

あなたが働いていたが、私が言ったように、アニメーション表示されませんでした私はもともと持っていたもの私のコメントアウト行から見ることができます:ここに私のコードです。私が[tableView setEditing:NO animated:YES]を呼び出そうとすると、うまくいきませんでした。これらの呼び出しをUIViewアニメーションブロック内に配置しようとすると、見栄えが悪くなりました。一時的にセルが左と後ろに移動するのを見ることができました。しかし、リロード呼び出しでは、セルは完全に消えます。現時点では、セルを変更することはしていません(たとえば、テキストフィールドなどを追加しないなど)。セルを左の作業を展開せずに「+」ボタンをアニメーション化したいだけなので最初の反復で。

大変助かりました。ありがとう。

enter image description hereenter image description here

答えて

2

トリックは常に細胞インデントが一定のままであるような編集モードにすることです。セルがロードされると、あなたはそれがであるものの状態を判断し、適切な編集スタイルを返し、どちらのスタイルまたは「なし」を「挿入」:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    BOOL shouldShowInsertButton = ...;//check internal state for cell 
    return shouldShowInsertButton ? UITableViewCellEditingStyleInsert : UITableViewCellEditingStyleNone; 
} 

編集ボタンをタップしたときに、あなたはあなたの内部を更新セルの状態とリロード:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    ...;//update internal state for cell 
    [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
} 

EDIT

はここで働いてsample projectです。

+0

これは素晴らしいです - 私はほとんどそこにいますが、私は奇妙なことに遭遇しています。下のコードを使用すると、セル全体が消えるだけです。おっと、私の元の投稿で私が言っていることを編集して含めるつもりです。 – fogwolf

+0

作業サンプルプロジェクトを追加しました。希望が役立ちます。 –

+0

すごくありがとう!それを今チェックアウトする。その間、私のオリジナルの投稿に編集を追加しました。 – fogwolf

関連する問題