Ich erhalte die UITableViewCell ein UIButton dies gerne gehört:Erste UITableViewCell mit Superview in iOS 7
-(void)buttonHandler:(UIButton *)button {
OrderCell *cell = [[button superview] superview];
NSLog(@"cell.item = %@", cell.item.text);
Und es funktioniert in etwas vor iOS 7. Ordnung, aber gibt mir:
[UITableViewCellScrollView Artikel]: Unbekannter Selektor an Instanz gesendet 0x17ae2cf0
wenn ich die app in iOS 7 laufen, aber wenn ich es tue:
-(void)buttonHandler:(UIButton *)button {
OrderCell *cell = [[[button superview] superview] superview];
NSLog(@"cell.item = %@", cell.item.text);
Dann funktioniert es in iOS 7 aber nicht früher?!?!?!
ich umgehen das Problem, indem dies zu tun:
OrderCell *cell;
if([[[UIDevice currentDevice] systemVersion] isEqualToString:@"7.0"])
cell = [[[button superview] superview] superview];
else
cell = [[button superview] superview];
NSLog(@"cell.item = %@", cell.item.text);
aber WTF ist los !? Weiß jemand, warum das passiert?
Danke!
Der Code wurde in Abhängigkeit von der privaten subview Struktur von 'UITableViewCell '. Offensichtlich hat sich diese Struktur in iOS 7 geändert. Es gibt viel sicherere Möglichkeiten, um das zu tun, was Sie wollen. Und Ihr neuer Code wird unter iOS 7.1 und iOS 8 brechen. – rmaddy
@rmaddy Was ist der sicherere Weg? – Mundi
Sie könnten die Superviews durchlaufen, prüfen, ob sie vom Klassentyp UITableViewCell sind, und dann diese Ansicht zurückgeben? Siehe Antwort: – CW0007007