2013-03-28 57 views
1

單挑,我只是在學習iOS開發的一些東西。我有一個TableView,它使用自定義單元格來切換其高度,以便在選擇時降低「抽屜」的影響。我幾乎完全有效,但我有一個非常奇怪的問題。索引行大於12的任何單元格不會更改高度。 這裏有一個視頻來演示。 - http://d.chend.me/4NMU擴展UITableViewCell不會在索引行上展開> 12

我正在以一種非常標準的方式初始化我的自定義單元格,我想。

static NSString *CellIdentifier = @"DrawerCell"; 

NSDictionary *clip = self.isFiltered ? [self.filteredClips objectAtIndex:indexPath.row] : [self.clips objectAtIndex:indexPath.row]; 

DrawerCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil] objectAtIndex:0]; 
} 

我heightForRowAtIndexPath委託方法看起來像這樣:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(self.selectedIndex == [NSNumber numberWithInt:indexPath.row]) 
    { 
     return 126.0f; 
    } 
    else { 
     return 60.0f; 
    } 
} 

然後換didSelectRowAtIndexPath方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [self.tableView deselectRowAtIndexPath:indexPath animated:NO]; 

    if(self.selectedIndex == [NSNumber numberWithInt:indexPath.row]) 
    { 
     self.selectedIndex = nil; 
     [tableView beginUpdates]; 
     [tableView endUpdates]; 
     NSLog(@"Selected Index: %@\nIndex Path Row: %i\n\n", self.selectedIndex, indexPath.row); 
     return; 
    } 

    //First we check if a cell is already expanded. 
    //If it is we want to minimize make sure it is reloaded to minimize it back 
    if(self.selectedIndex != nil) 
    { 
     self.selectedIndex = [NSNumber numberWithInt:indexPath.row]; 
     [tableView beginUpdates]; 
     [tableView endUpdates]; 
     NSLog(@"Selected Index: %@\nIndex Path Row: %i\n\n", self.selectedIndex, indexPath.row);   
     return; 
    } 


    //Finally set the selected index to the new selection and reload it to expand 
    self.selectedIndex = [NSNumber numberWithInt:indexPath.row]; 
    [tableView beginUpdates]; 
    [tableView endUpdates]; 
    NSLog(@"Selected Index: %@\nIndex Path Row: %i\n\n", self.selectedIndex, indexPath.row);  

} 

是否有任何公然之所以索引行大於12不同時工作的一切在他們之前工作完美?正如一個側面提示,他們仍然接收觸摸事件,並記錄正確的索引路徑行,他們只是不會顯示抽屜。

回答

1

您的問題可能(可能是)是您通過==比較NSNumbers。作爲對象,它比較地址,而不是數值。請嘗試使用-isEqual:

+0

是的!就是這樣。一個小細節,但有所不同。謝謝! –