- [UItableviewcell _setEditingStyle:]:发送到解除分配的实例的消息

时间:2013-05-29 10:17:03

标签: ios objective-c cocoa-touch uitableview

我的tableview单元格中有一个UITextField。在编辑的tableview类中,我正在[tableview setEditing:YES]和完成[tableview setEditing:NO]

因为我在tableview单元格中有- (void)setEditing:(BOOL)editing animated:(BOOL)animated,所以我正在使用此方法。

按完成按钮后,它会在[tableview setEditing:NO]行崩溃并显示:

*** -[mycell _setEditingStyle:]: message sent to deallocated instance 0x8d401b0

看到po 0x8d401b0后,它正在提供*** -[mycell respondsToSelector:]: message sent to deallocated instance 0x8d401b0

如何解决此次崩溃?

代码:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
    [super setEditing:editing animated:animated];
    if(editing)
    {
        [self editModeActivated];
    }
    else 
    {   
        [self editModeDeactivated];
    }
}

rowatindexpath的单元格:

static NSString *identifier=@"cell";
mycell *cell = (mycell *)[tableView dequeueReusableCellWithIdentifier:identifier];
if (cell == nil) 
{
    cell = [[mycell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; 
}

细胞的初始化代码

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [[[NSBundle mainBundle] loadNibNamed:@"mycell" owner:self options:nil] objectAtIndex:0];
    if (self) {
        // Initialization code
        [self customIntialization];
    }
    return self;
}

2 个答案:

答案 0 :(得分:0)

GOT解决方案我只需要在设置[tableview setEditing:NO]之前重新加载表。完成方法

答案 1 :(得分:0)

如果在外面检查tableviewcontroller编辑属性,则可能需要在显示表之前重新加载表。