我使用自定义TableViewCell构建一个TableView,第一个自定义单元格有一个工具栏和一些Bar按钮Item以及一个简单的测试按钮。 问题是:当我点击任何栏按钮项或简单按钮时,我有一个EXC_BAD _ACCESS?
这是构建tableview单元格的代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"taskCell";
if(indexPath.row != 0){
TaskCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"TaskCell" owner:nil options:nil];
for (UIView *view in views) {
if([view isKindOfClass:[UITableViewCell class]])
{
cell = (TaskCell*)view;
}
}
}
return cell;
}
else{
if (travelInfoCell == nil) {
NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"TravelInfo" owner:nil options:nil];
for (UIView *view in views) {
if([view isKindOfClass:[UITableViewCell class]])
{
travelInfoCell = (TravelInfo*)view;
}
}
}
travelInfoCell.selectionStyle = UITableViewCellSelectionStyleNone;
return travelInfoCell;
}
}
我计划将动作代码委托给TableViewController,但是在瞬间我甚至无法点击按钮IBAction前的断点。
进入TravelInfo.m的代码并且无法正常工作并向我抛出EXC_BAD _ACCESS:
- (IBAction)doAccepted:(id)sender {
NSLog(@"accepted");
//[delegate travelAccepted];
}
有任何解决方案吗?
答案 0 :(得分:1)
这是你的问题:
travelInfoCell = (TravelInfo*)view;
您没有保留对视图的引用,因此视图变量的预期寿命有限。您需要保留以保留参考。这样做:
travelInfoCell = [(TravelInfo*)view retain];
不要忘记释放单元格并在viewDidUnload
上取出它