Я получаю UITableViewCell UIButton принадлежит это нравится:Получение UITableViewCell с надтаблицей в прошивке 7
-(void)buttonHandler:(UIButton *)button {
OrderCell *cell = [[button superview] superview];
NSLog(@"cell.item = %@", cell.item.text);
И это прекрасно работает в чем-нибудь, прежде чем прошивка 7. Но дает мне:
[UITableViewCellScrollView пункт]: непризнанный селектор направлен например 0x17ae2cf0
если я запустить приложение в прошивке 7. НО, если я:
-(void)buttonHandler:(UIButton *)button {
OrderCell *cell = [[[button superview] superview] superview];
NSLog(@"cell.item = %@", cell.item.text);
Затем он работает в iOS 7, но не раньше?!?!?!
я обхожу этот вопрос, как это сделать:
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);
но WTF происходит !? Кто-нибудь знает, почему это происходит?
Спасибо!
Ваш код был в зависимости от частной подвид структуры 'UITableViewCell '. Очевидно, что структура изменилась в iOS 7. Есть гораздо более безопасные способы делать то, что вы хотите. И ваш новый код будет разбит под iOS 7.1 и iOS 8. – rmaddy
@rmaddy Что такое безопасный способ? – Mundi
Вы можете выполнять итерацию через супервизоры, проверяя, имеют ли они тип класса UITableViewCell и затем возвращают это представление? См. Ответ: – CW0007007