2014-12-29 4 views
0

Я определил пользовательский класс с именем SearchView, который имеет метод с именем «setup».Пользовательский класс, распознанный на симуляторе iOS 8.1, но не на iOS 7.1 симуляторе

// SearchView.h 
@interface SearchView:UIView 
- (void)setup; 
@end 

Я добавил его к MainViewController в InterfaceBuilder как подвид и установить это настраиваемое поле класса в инспекторе идентичности как класс SearchView. Я подключил это к MainViewController:

// MainViewController.h 
@interface MainViewController:UIViewController 
@end 

// MainViewController.m 
#import "SearchView.h" 

@interface MainViewController() 
@property (nonatomic,strong) IBOutlet SearchView * searchView; 
@end 

@implementation MainViewController 

- (void)ViewDidLoad 
{ 
    [self.searchView setup]; 
} 

Это приложение является универсальным, поэтому у меня есть 2 раскадровки. Когда я запускаю это на симуляторе iPad, он хорошо работает для всех версий iOS. Но когда я запускаю это на симуляторе iPhone, он отлично подходит для iOS 8.1, но на 7.1 я получаю сообщение об ошибке, которое не приводит к сбою приложения.

-[UIView setup]: unrecognized selector sent to instance 0x78882660 

Я попытался переместить его в ViewDidAppear - без изменений. я вошел класс этого Ивара

- (void)ViewDidLoad 
{ 
    NSLog(@"searchClass class: %@",NSStringFromClass([self.searchView class])); 
    [self.searchView setup]; 
} 

и оказывается, что при запуске на сима «7.1 он записывает

self.searchView: <UIView: 0x7916f540; frame = (50 0; 234 50); autoresize = RM+BM; layer = <CALayer: 0x7916e360>> 

но на 8,1 сим» я получаю

self.searchView: <SearchView: 0x79e35170; frame = (50 0; 234 50); autoresize = RM+BM; tag = 4444; layer = <CALayer: 0x79e349b0>> 

Я стараюсь чтобы пометить вид, а затем называть его:

self.searchView = (SearchView*)[self.view viewWithTag:4444]; 

, но ошибка остается.

Кроме того, -ObjC уже добавлен к другим флагам компоновщика.

Что может быть причиной этой ошибки? почему это представление получает как UIView только для этого конкретного симулятора? У меня нет доступного устройства iPhone iOS 7 для его проверки.

+0

Вы сказали, что добавили его в InterfaceBuilder, но почему у свойства нет IBOutlet? –

+0

Не скопировать его правильно, я его отредактировал. – Got99Errors

+0

У меня нет ответа, но «приведение» не имеет ничего общего с проблемой. Строки вашего журнала показывают, что это действительно другой вид объекта просмотра в этих двух случаях. Что такое родительский класс 'OPSearchView' (и как это отличается от' SearchView')? –

ответ

0

Основываясь на предоставленной информации, похоже, что вы подключили выход searchView к объекту UIView, а не к объекту SearchView.

+0

Если это так, то он не будет работать и на симуляторе iOS 8.1, но это так. Я просто не понимаю, почему он не работает на 7.1-симуляторе. – Got99Errors

+0

Просьба предоставить ссылку на образец проекта, показывающий вашу проблему или скриншот из IB, противоречащий моей догадке. –

Смежные вопросы