Tôi nhận được UITableViewCell một UIButton thuộc như thế này:Bắt UITableViewCell với SuperView trong iOS 7
-(void)buttonHandler:(UIButton *)button {
OrderCell *cell = [[button superview] superview];
NSLog(@"cell.item = %@", cell.item.text);
Và nó hoạt động tốt trong bất cứ điều gì trước khi iOS 7. Tuy nhiên, mang lại cho tôi:
[UITableViewCellScrollView item]: chọn không được công nhận gửi đến dụ 0x17ae2cf0
nếu tôi chạy các ứng dụng trong iOS 7. NHƯNG nếu tôi làm:
-(void)buttonHandler:(UIButton *)button {
OrderCell *cell = [[[button superview] superview] superview];
NSLog(@"cell.item = %@", cell.item.text);
Sau đó, nó hoạt động trong iOS 7 nhưng không phải trước đó?!?!?!
Tôi đang phá vỡ vấn đề này bằng cách làm này:
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);
nhưng WTF đang xảy ra !? Có ai biết tại sao điều này xảy ra không?
Cảm ơn!
Mã của bạn đã được tùy thuộc vào cấu trúc subview tin của 'UITableViewCell '. Rõ ràng là cấu trúc đã thay đổi trong iOS 7. Có nhiều cách an toàn hơn để làm những gì bạn muốn. Và mã mới của bạn sẽ bị hỏng dưới iOS 7.1 và iOS 8. – rmaddy
@rmaddy Cách an toàn hơn là gì? – Mundi
Bạn có thể lặp qua giám sát, kiểm tra xem chúng có thuộc loại UITableViewCell và sau đó trả lại chế độ xem đó không? Xem câu trả lời: – CW0007007