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 {

    }
}
Другие вопросы по тегам