2012-03-06 32 views
0

我建立自定义TableViewCell一个TableView中内的按钮,第一个自定义单元格有一个工具栏和一些栏按钮项目,并测试一个简单的按钮。 问题是:当我点击任何栏按钮项目或简单的按钮时,我有一个EXC_BAD _ACCESS?EXC_BAD_ACCESS当我点击一个自定义的UITableViewCell

这是我的代码来构建的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

作为nob1984说,你可以保留视图和viewDidUnload方法释放它也可以分配内存空间,以便指针不会在您想要之前释放。所有的EXC_BAD_ACCESS都意味着你正在访问一个终止对象的指针。 – David 2012-03-07 01:13:34

回答

1

这是你的问题:

travelInfoCell = (TravelInfo*)view; 

你没有保持到视图的引用,所以有一个隐含的预期寿命有限的视图变量。您需要保留以备参考。这样做:

travelInfoCell = [(TravelInfo*)view retain]; 

不要忘记释放细胞和无气出在viewDidUnload

+0

嗨nob1984,谢谢。我像你一样添加保留,但我仍然有同样的问题。为了您的信息:我不能设置从细胞的自定义类中的自定义单元格笔尖文件的出口,它把我这个异常时的tableview电话: - (UITableViewCell的*)的tableView:(UITableView的*)的tableView的cellForRowAtIndexPath:(NSIndexPath * )indexPath:***由于未捕获的异常'NSUnknownKeyException',原因:'[ setValue:forUndefinedKey:]:该类不是关键字btnReject的编码兼容值。 – 2012-03-08 13:22:47

+0

我很难解析你想说的话。 TravelInfo是一个通过相同名称的笔尖加载的自定义单元格。你看到的例外表明,在那个笔尖上你试图在“文件所有者”上设置一个出口,但是你可以在你的代码中看到所有者是“无”。设置您试图设置在您的笔尖中的表格视图单元上的任何出口不是文件所有者。 – NSProgrammer 2012-03-08 20:43:09

+0

对不起,我的坏解释。所以我意识到,在文件所有者为零之前,我无法在TravelInfo类中设置出口。但是我应该怎么做才能在我的代码中分配一个所有者? – 2012-03-09 13:54:47

相关问题