質問

私は2つのセグウトに接続された単純なマスタービューコントローラ、 "Show detail"の場合は「新しい "の追加"のためのものです。

  • 「詳細を表示」セッションを指定して詳細ビューコントローラにセグメント:いいえ。
  • 「+」(アイコンを追加)セグメントをタップします。指定された詳細ビューコントローラにセグメント:はい

    iOS 5.1: "+"が予想されるように機能し、詳細ページは編集モードとEditingStyleForRowAtIndexPath firesに挿入と削除標識を表示します。

    iOS 6.0: "+"は詳細ページへの移行を行いますが、editingStyleForRowAtIndexPathは起動しません。設定されている他のコード:はい実行されます。DidSelectrowatIndexPathはFire(delegate= self)を発射します。

    詳細ページに1回編集モードが期待どおりに機能します。

    任意のアイデア?

    // Master.m
    if([[segue identifier] isEqualToString:@"NewRecipe"]) {
    
        DetailViewController *detailViewController = [segue destinationViewController];
        // stuff
        detailViewController.recipe = r;     
        detailViewController.delegate = self;
        detailViewController.editing = YES;
    }
    
    
    // Detail.m
    -(void)setEditing:(BOOL)flag animated:(BOOL)animated {
    
       if (flag) {
    
       [self.tableView setEditing:flag animated:YES];
       [self.tableView beginUpdates];
       // the row does get added
       [self.tableView insertRowsAtIndexPaths:@[pathToAdd] withRowAnimation:UITableViewRowAnimationAutomatic];  
        // datasource gets updated here
        [self.tableView endUpdates];
        .... 
        }
    }
    
    .

役に立ちましたか?

解決

私はそれを考え出した。これが修正の理由がわからない、私はこれが悪いコードを悪いコードで置き換えないことを願っています。

 Master.m
// iOS 5 -- this is OK
detailViewController.editing = YES;
.

IOS 6の場合、DeplaiteMetherを呼び出して、設定するかどうかを判断するためにDELEGATEメソッドを呼び出しました:はい。

Master.m
-(BOOL)isNewRecipe {
    return (_isNewRecipe == 1);
}

Detail.m
if ([self.delegate isNewRecipe]) {
    [self setEditing:YES];        
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top