NSInvalidArgumentException', причина: '-[UITableView setSeparatorInset:]: нераспознанный селектор, отправленный экземпляру
Следующее в viewWillAppear
[SYPTableView setSeparatorInset:UIEdgeInsetsZero];
Работает нормально на iOS 7, но на 6.1 это подняло исключение:
NSInvalidArgumentException', reason: '-[UITableView setSeparatorInset:]: unrecognized selector sent to instance
Моя цель - убрать границу ячейки.
2 ответа
Решение
separatorInset
недвижимость доступна на UITableView
от iOS 7.0, и именно поэтому вы получаете исключение на iOS 6.1.
Из кода, который вы разместили, похоже, что вы хотите удалить вставку по умолчанию, представленную в iOS 7. Такая вставка отсутствует в iOS 6, поэтому вам нужно только удалить вставку в iOS 7.
Вы можете проверить, отвечает ли табличное представление setSeparatorInset:
дела
if ([SVPTableView respondsToSelector:@selector(setSeparatorInset:)]) {
[SYPTableView setSeparatorInset:UIEdgeInsetsZero];
}
Если вы работаете в IOS 6 и т. Д. Используйте следующее
SEL selector;
selector=NSSelectorFromString(@"setSeparatorInset:");
if([table respondsToSelector:selector])
{
@try {
dispatch_async(dispatch_get_main_queue(), ^{
NSMethodSignature *aSignature;
NSInvocation *anInvocation;
aSignature=[table methodSignatureForSelector:selector];
anInvocation=[NSInvocation invocationWithMethodSignature:aSignature];
[anInvocation setSelector:selector];
[anInvocation setTarget:table];
UIEdgeInsets temp=UIEdgeInsetsZero;
[anInvocation setArgument:&temp atIndex:2];
[anInvocation invoke];
});
}
@catch (NSException *exception) {
NSLog(@"EXCEPTION WHILE CALLING Separator inset => %@",[exception userInfo]);
}
@finally {
}
}