Я просто обновил iOS 7.1, и я получил нераспознанную ошибку выбора для функции под названием «_layoutCells».iOS: больше сбоев табуляции в моем подклассе UITabBarController на iOS 7.1
У меня есть простой подкласс UITabBarController.
Я просто обновил iOS 7.1, и я получил нераспознанную ошибку выбора для функции под названием «_layoutCells».iOS: больше сбоев табуляции в моем подклассе UITabBarController на iOS 7.1
У меня есть простой подкласс UITabBarController.
Обратите внимание, что это взломать, чтобы избежать плохого сбоя, пока не будет найдено лучшее решение или объяснение. Хотя я должен поделиться им.
Просто добавьте следующий метод вашей реализации подкласса UITabBarController:
- (void) _layoutCells
{
// HACK ALERT: on iOS 7.1, this method will be called from deep within the bowels of iOS. The problem is that
// the method is not implemented and it results in an unrecognized selected crash. So we implement it...
//
// What could go wrong?
}
Я не думаю, что это хорошая идея - даже в качестве обходного решения. Единственный случай, когда он должен использоваться, находится в разработке (для проверки других представлений, которые невозможно получить из-за этой ошибки). Но приложения не должны публиковаться с этим обходным путем, поскольку этот метод переопределяет поведение '_layoutCells', что может тормозить ожидаемое поведение iOS. На мой взгляд, лучше просто позволить Apple исправить это. Я опубликовал сообщение об ошибке об ошибке: Идентификатор проблемы 16299264. – CGee
Я борюсь с той же ошибкой. Моя проблема заключается в том, что я предоставляю свой собственный источник данных и делегировать для большего табуляции табуляции. Этот метод вызывается с классом делегата. Делитесь, когда Apple полагается. –
Такая же проблема здесь. Я собираюсь подать сегодня с обходным взломом. Я дам всем знать, если меня отвергнут. – shawnwall
У меня был тот же вопрос в моем приложении, где я представил пользовательский делегат/источник данных к более контроллеру Tableview. Я не понял, почему, но кажется, что метод _layoutCells вызывается на более контроллере tableview. я установил его, добавив этот метод:
-(NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector
{
// self.viewController is my tabBarController
UINavigationController* moreNavigationController = self.viewController.moreNavigationController;
// Retrieve the more list controller (it is the first in the hierarchy)
id moreListController = moreNavigationController.viewControllers.firstObject;
Class moreTableViewClass = [moreListController class];
if (moreTableViewClass) {
return [moreTableViewClass instanceMethodSignatureForSelector:aSelector];
}
return nil;
}
я сделал различные испытания, и это, кажется, надежный обходной путь. Но если вы найдете лучшее решение ... поделитесь им!
Для меня: ваш метод возвращает селектор для _layoutCells, что то же самое вызывает проблему, а затем вызывает «непризнанный селектор». –
Благодаря GenesisST за его ответ, но я знаю, что методы вызваны по причине. И обычно layoutCells будет вызывать макет для всех subviews. Хотя я скорее жду ответа от Apple, мне нравятся другие люди, которые должны представить мое приложение в заданной временной шкале.
В моем случае я получил эту ошибку из-за некоторых хаков. Я заменил делегат UIMoreNavigationController, который является недокументированным классом Apple, поэтому я мог ожидать ошибки. Я делаю этот взлом, чтобы расширить функциональные возможности вкладки «Дополнительно», и эта ошибка возникает только при изменении делегата table_allNovigationController.
Итак, я храню их делегат, меняю его, а затем вызываю _layoutCells своему делегату, когда iOS вызывает его в моем классе.
- (void)_layoutCells
{
if([self.moreTableViewDelegate respondsToSelector:@selector(_layoutCells)]){
[self.moreTableViewDelegate performSelector:@selector(_layoutCells)];
}
}
Я не знаю, если это применимо, чтобы кто-то здесь, но только в том случае, если кто-то приходит к SO с моим краем корпуса.
Спасибо, Майкл! Я тоже замещал больше делегата контроллера контроллера. Я попытался проверить, действительно ли суперкласс выполнил _layoutCells, но это не так, потому что это был делегат, который он пытался вызвать! – GenesisST
Такая же проблема здесь. Я не могу найти ошибку. Это на нашей стороне или на Яблоки? – CGee
Я опубликовал сообщение об ошибке в этой проблеме с Apple. Идентификатор проблемы 16299264. – CGee