2012-03-06 31 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

相關問題