NSMutableDictionary
NSIndexPath
key
kullanarak bir değeri depolamayı ve geri almayı denemenin neden başarısız olabilir? NSMutableDictionary'da NSIndexPath anahtarını kullanan sorunlar?
UITableView
için bir
NSMutableDictionary
UITableViewCell
yükseklikleri (
self.cellHeights
) depolamak için bunu denedi. Bana bilinmeyen nedenlerden dolayı
- (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSNumber *heightNSNumber = [self.cellHeights objectForKey:indexPath];
if (!heightNSNumber)
{
heightNSNumber = [NSNumber numberWithFloat:100.0];
[self.cellHeights setObject:heightNSNumber forKey:indexPath];
}
return [heightNSNumber floatValue];
}
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSNumber *heightNSNumber = [self.cellHeights objectForKey:indexPath];
if (!heightNSNumber)
{
heightNSNumber = [NSNumber numberWithFloat:100.0];
[self.cellHeights setObject:heightNSNumber forKey:indexPath];
}
if ([heightNSNumber floatValue] == 100.0)
{
[self.cellHeights setObject:[NSNumber numberWithFloat:50.0]
forKey:indexPath];
} else {
[self.cellHeights setObject:[NSNumber numberWithFloat:100.0]
forKey:indexPath];
}
[tableView beginUpdates];
[tableView endUpdates];
}
, tableView:didSelectRowAtIndexPath:
içinde hücre yüksekliği alma: Her zaman hücre genişletmek ya o belirli indexPath
için NSMutableDictionary
saklanan değere bağlı olarak iki farklı yüksekliğe arasındaki sözleşme olur ya o, bir UITableViewCell
aday [self.cellHeights objectForKey:indexPath]
aracılığıyla sadece iyi çalışıyor. Ancak, tableView:heightForRowAtIndexPath:
içinde tableView:heightForRowAtIndexPath:
içinde hücre yüksekliğini almayı denemek her zaman nil değerini döndürür çünkü indexPath'in yüksekliği depolamak için kullandığı dizin, indexPath.section
için aynı değerlere sahip olsa bile hücre yüksekliğini almak için kullanılan indexPath ile eşleşmiyor ve indexPath.row
. Bu nedenle, "aynı" dizin yolu için yeni bir nesne, self.cellHeights
'a eklenir (daha sonra self.cellHeights.count
arttıkça belirgin hale gelir).
Bu does değil o şimdilik yapıyorum yani ... anahtar olarak satır ([NSNumber numberWithInteger:indexPath.row]
) kullanılarak NSMutableDictionary hücre yükseklikleri depolamak, ama nedenini indexPath
anlamak istiyorum zaman ne Anahtar olarak çalışmıyor.
Holy Moly: geçici çözüm her zaman böyle sözlük anahtarlarını ararken olarak,
isEqual
veyahash
dayanan herhangi bir şey için bir anahtarNSIndexPath
üretmektir. Bu DRIVING ME MAD oldu. Saatlerce, sözlükimin neden bir KDEW varlığımın bir indexPath için geri geldiğini anlamaya çalışırken interneti taradım. Kesinlikle çıldırtıcı. Göndermek için teşekkürler. – Andy