- [UItableviewcell_setEditingStyle:]:发送到已释放实例的消息

问题描述:

我在我的tableview单元格中有一个UITextField。在编辑上的tableview类中,我在做[tableview setEditing:YES]和完成[tableview setEditing:NO]- [UItableviewcell_setEditingStyle:]:发送到已释放实例的消息

因为我在桌面视图单元中有- (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 *[email protected]"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; 
} 
+0

代码在哪里? – Bhavin

+0

你可以发布tableView:cellForRowAtIndexPath:UITableView数据源的方法的代码? – schaechtele

+1

你的init方法确实看起来很疯狂。细胞重复使用此代码。 – vikingosegundo

得到了解决我只需要在设置之前重新加载表[实现代码如下setEditing:NO]。在完成方法

+0

这听起来像是有什么东西坏了 – vikingosegundo

+0

我觉得你的'editModeActivated'或'editModeDeactivated'有问题。我认为重新加载表格并没有真正“修复”问题。 – mAu

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