2015-06-12 106 views
-1

錯誤: - 使用未聲明的標識符單元格。無法在一個視圖控制器中加載兩個表視圖

無法在一個視圖控制器中加載兩個自定義單元格。

-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath 
{ 
    if (tableView == tableView_grantRecordAccess) 
    { 
     UITableViewCell *cell = [tableView_grantRecordAccess dequeueReusableCellWithIdentifier:@"EHSRecordAccessGrantCell"]; 

      if (cell == nil) { 

       // Load the top-level objects from the custom cell XIB. 

       NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"EHSRecordAccessGrantCell" owner:self options:nil]; 

       // Grab a pointer to the first object (presumably the custom cell, as that's all the XIB should contain). 

       cell = [topLevelObjects objectAtIndex:0]; 

      } 

     return cell; 

    } 

else if (tableView == tableView_accessRecordRequest) { 

     UITableViewCell *cell = [tableView_accessRecordRequest dequeueReusableCellWithIdentifier:@"EHSAccessRecordCell"]; 

     if (cell == nil) { 

      // Load the top-level objects from the custom cell XIB. 

      NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"EHSAccessRecordCell" owner:self options:nil]; 

      // Grab a pointer to the first object (presumably the custom cell, as that's all the XIB should contain). 

      cell = [topLevelObjects objectAtIndex:0]; 
     } 
      } 

    return cell; 

} 
+0

檢查XIB中的單元格標識符。 –

+0

其他條件,如果我們得到錯誤使用未聲明的標識符單元格 –

+0

當您返回單元格時,在else else條件中,右括號錯位(「}」),因此未定義。正確縮進您的代碼,您會看到。它應該在'return cell;'之後而不是之前。 – Larme

回答

1

這是單元格引用範圍的問題,如果你將在方法的第一線使細胞的參考,然後使用該參考之用在這兩個條件,那麼它會工作。

+0

但第一個條件是執行else如果條件不執行,我想一次加載兩個表視圖幫我 –

0

檢查您的故事板是否有正確的單元標識符。

在身份檢查器中選擇您的表的原型單元的標識符。

看看你的錯誤陳述,我可以假設 - 你可能忘記了將標識符分配給你的單元格,或者你的代碼中使用了錯誤的標識符(可能是拼寫錯誤)(cellForRowAtIndexPath方法)。

1
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath 
{ 
     UITableViewCell *cell = nil; 
     if (tableView == tableView_grantRecordAccess) 
     { 
     cell = [tableView_grantRecordAccess dequeueReusableCellWithIdentifier:@"EHSRecordAccessGrantCell"]; 

     if (cell == nil) { 

      // Load the top-level objects from the custom cell XIB. 

      NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"EHSRecordAccessGrantCell" owner:self options:nil]; 

      // Grab a pointer to the first object (presumably the custom cell, as that's all the XIB should contain). 

      cell = [topLevelObjects objectAtIndex:0]; 

     } 

     return cell; 

} 
else if (tableView == tableView_accessRecordRequest) { 

    cell = [tableView_accessRecordRequest dequeueReusableCellWithIdentifier:@"EHSAccessRecordCell"]; 

    if (cell == nil) { 

     // Load the top-level objects from the custom cell XIB. 

     NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"EHSAccessRecordCell" owner:self options:nil]; 

     // Grab a pointer to the first object (presumably the custom cell, as that's all the XIB should contain). 

     cell = [topLevelObjects objectAtIndex:0]; 
    } 
    } 
    return cell; 

} 
+0

我們無法加載第二個表視圖否則條件不執行。我想一次加載兩個表視圖。 –

1

添加此線之上如果條件分別 //如果(細胞==無){...}

//對於第一表條件

if (![cell isKindOfClass:[EHSRecordAccessGrantCell 
class]])cell = nil; 

//對於第二表條件

if (![cell isKindOfClass:[EHSAccessRecordCell 
class]])cell = nil; 

因爲您已經註冊了兩個單元格表格,並且每當涉及到第二個單元格時,該單元格都具有第二個不同類型單元格的引用。

+0

我們得到一個錯誤使用未聲明的EHSAccessRecordCell –

相關問題