- (BOOL)cellIsSelected:(NSIndexPath *)indexPath
{
// Return whether the cell at the specified index path is selected or not
NSNumber *selectedIndex = [selectedIndexes objectForKey:indexPath];
return selectedIndex == nil ? FALSE : [selectedIndex boolValue];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
// Deselect cell
[tableView deselectRowAtIndexPath:indexPath animated:YES];
// Toggle 'selected' state
BOOL isSelected = ![self cellIsSelected:indexPath];
// Store cell 'selected' state keyed on indexPath
NSNumber *selectedIndex = [NSNumber numberWithBool:isSelected];
[selectedIndexes setObject:selectedIndex forKey:indexPath];
// This is where magic happens...
[beveragesTableView beginUpdates];
[beveragesTableView endUpdates];
[selectedIndexes removeAllObjects];
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
// If our cell is selected, return double height
if ([self cellIsSelected:indexPath] && ![[descriptionTypeArray objectAtIndex:indexPath.row] isEqualToString:@" "])
{
return kCellHeight * 2.0;
}
// Cell isn't selected so return single height
return kCellHeight;
}
selectedIndexes被一個目的ofNSMutableDictonary其在h文件 聲明我已經建立在那裏動畫基於存在於所述細胞或不..描述,同時它動畫的tableview,如果我選擇一行的行大小增加,當我再次點擊它的行大小應該回到正常高度,我只能做到這一點,當我選擇另一行/單元格,我想細胞回去正常的高度,當我點擊選定的行。行不UITableView的細胞動畫得到取消
一個問題:如果你希望用戶能夠在同一時間選擇一個以上的項目就不是完全清楚或只有一個?你實現了NSMutableArray - 導致更多的相信。但是,當用戶點擊一個時,您將清除所有選定的索引... – 2012-02-27 16:46:14
用戶必須一次只選擇一個項目。在那裏的代碼允許用戶一次只選擇一個項目..它只是當用戶觸摸說第一個項目的單元格增加。但是當用戶觸摸相同的物品時,單元必須返回到其正常高度。我無法想象如何去做 – orgami 2012-02-27 17:22:40
我認爲在selectedIndexes數組中有一些問題。你說當時只有一個(或沒有)細胞可以被選擇。然後insted數組只使用NSIndexPath * selectedIndex(如果沒有選中單元格,則可以爲nil)。代碼的可讀性會更高,並且更容易發現問題。 – 2012-02-27 17:41:12