这是非常常见的问题,虽然我有谷歌和交叉检查我的代码几次但我无法弄清楚崩溃
*** -[MyCustomCell performSelector:withObject:withObject:]: message sent to deallocated instance 0x96f6980
我有一个名为MyCustomCell
的CustomCell与XIB,我有3个按钮用于Facebook,Twitter,LinkedIn。我在CustomCell类中给了他们所有的IBAction。
当我点击其中任何一个时,我都会遇到这种情况。
我正在使用ARC。
在我的ViewController类中,我有cellForRowAtIndexPath
{
static NSString *CellIdentifier = @"MyCustomCell";
MyCustomCell *cell = (MyCustomCell*)[myTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = (MyCustomCell *)[nib objectAtIndex:1];
}
return cell;
}
MyCustomCell.m
- (IBAction)facebookPressed:(BaseButton *)sender {
}
- (IBAction)twitterPressed:(BaseButton *)sender {
}
- (IBAction)linkedInPressed:(BaseButton *)sender {
}
答案 0 :(得分:1)
我今天犯了这个错误! :)你要做的就是更换2行
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"NameOfCustomCellNibFile" owner:self options:nil];
cell = [nib objectAtIndex:1];
您必须使用.xib文件的名称加载loadNibNamed :.我还认为它与标识符有关,但这是关于引用到单元格而不是单元格的nib的名称。
希望这有帮助!
答案 1 :(得分:1)
所以代码如下:
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner: nil options:nil];
MyCustomCell *cell = (MyCustomCell*)[views objectAtIndex:0];
进一步确保您执行以下操作来创建XIB
好的,接下来是另一部分简单的过程:
答案 2 :(得分:1)
您也可以像这样编写自定义单元格。在自定义单元格的笔尖处拖动一个UIButton并在Xib中设置它的标签。然后使用波纹管方法: -
UIButton *btnMulSelected;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier =[NSString stringWithFormat:@"%d_%d",indexPath.section,indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
[[NSBundle mainBundle]loadNibNamed:@"cell_custome_iphones" owner:self options:nil];
cell = self.tblCell;
self.tblCell = nil;
btnMulSelected =(UIButton*)[cell.contentView viewWithTag:2];
[btnMulSelected addTarget:self action:@selector(MyButtonAction:) forControlEvents:UIControlEventTouchUpInside];
}
return cell;
}
不要从Nib连接IBAction。只需连接Custom-cell IBOutlate或从nib中输入Unique UIButton标签。