2014-04-03 52 views
0

我在ViewController中有2個tableviews。而且我正在根據一個標誌在2之間切換。TableViewCell爲零

當我加載視圖控制器時,評論表視圖被加載,但由於某種原因,cellComment變爲零。 我已經註冊了的tableview類也設置在故事板的標識符,但出隊不工作

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(currentSelectionNews) 
    { 
     CMLTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"NewsCell" forIndexPath:indexPath]; 
     [self configureCell:cell atIndexPath:indexPath]; 
     return cell; 
    } 
    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"]; 

    UITableViewCell *cellComment = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 
    // cellComment in nil 
    [self configureCommentCell:cellComment atIndexPath:indexPath]; 
    return cellComment; 
} 

其他的tableview加載罰款。我首先在故事板中創建了它。

+2

不要裏面'cellForRowAtIndexPath'寄存器單元 –

+0

,如果你取得了代碼的單元格(及其子視圖)您應該只註冊類。如果你在xib中製作了它,那麼你應該註冊這個筆尖。如果你是在故事板上製作的,那麼不要註冊任何東西。 – rdelmar

+0

你在使用故事板和原型單元或XIB嗎?如果你正在使用Storyboard和Prototype單元,那麼你不需要調用'registerClass:forCellReuseIdentifier:'也不需要下面推薦的'if(cellComment == nil){...}'塊。 –

回答

1

dequeueReusableCellWithIdentifier只有在您已經創建了等待回收的單元格時纔有效。試試這個:

UITableViewCell *cellComment = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; 
if(cellComment == nil){ 
    cellComment = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"]; 
} 
+0

D'oh! :)非常感謝.. – hackerinheels

+0

你的第一個陳述是不正確的。如果單元格是在故事板中製作的(如OP所示),則dequeueReusableCellWithIdentifier:將返回一個有效的單元格。如果需要從故事板定義中創建它,或從回收隊列中獲取一個,它將創建它。不需要if(cell == nil)子句。 – rdelmar