我有一个简单的主设备和细节视图控制器与两个SEGUES连接,一个用于“显示细节”,一个用于“添加新”。

  • “显示详细信息”SEGUE与SETEDITING的详细视图控制器:NO。
  • 点击“+”(添加图标)SEGUE与SETEDITING的详细视图控制器:是

    iOS 5.1:“+”在我期望时工作,详细信息页面处于编辑模式和EditingStyleForrowatIndexpath触发,以显示插入和删除指示符。

    iOS 6.0:“+”使转换到详细信息页面,但EditingStyleForrowIndexpath从未触发。设置的其他代码:是执行的。DidselectRoyatindexpath做火(委托= self)。

    在详细信息页面上,编辑模式在两种情况下都在预期工作。

    任何想法?

    // 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,我需要detailviewcontroller来调用委托方法来确定是否设置:是。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top