2013-08-26 3 views
4

Код ниже, возвращает «YES» в IOS 5.0, 6.0, 6.1 и т. Д., Но возвращает «NO» в IOS 7.0. У вас есть идея об этом? Является ли это ошибкой IOS 7.0? Большое спасибо ..isKindOfClass не работает должным образом IOS 7

[view isKindOfClass:[SimpleLabel class]] 

PS: "SimpleLabel" класс наследуется от UILabel.

---- UPDATE ----

Извините за неясным вопрос. :( я использовать код, указанный выше в UITableViewCell класса, и добавить SimpleLabel, как показано ниже;

[self addSubview:label]; 

Я переопределить layoutSubviews функцию, петли в self.subviews, но [view class] всегда возвращает UITableViewCellScrollView

-(void)layoutSubviews { 
[super layoutSubviews]; 
for (UIView*view in self.subviews) { 
    if ([view isKindOfClass:[SimpleLabel class]]) { 
     SimpleLabel*label = (SimpleLabel*)view; 
+7

Помните, что iOS7 и Xcode 5 по-прежнему покрыты NDA, что ограничивает вас от разговоров об этом за пределами официального форума разработчиков Apple. – rckoenes

+5

Я уверен, что ваш «вид» равен нулю –

+0

iOS7 находится под NDA. Вы должны опубликовать любой вопрос, связанный с iOS7 в форумах Apple. –

ответ

7

UITableViewCell '. s iOS 7

В iOS < = 6 иерархия выглядит как е

<UITableViewCell> 
    | <UITableViewCellContentView> 
    | | <UILabel> 

, тогда как в прошивке 7 это как

<UITableViewCell> 
    | <UITableViewCellScrollView> 
    | | <UIButton> 
    | | | <UIImageView> 
    | | <UITableViewCellContentView> 
    | | | <UILabel> 

(источник: http://www.curiousfind.com/blog/646)

При добавлении подвида он вставлен в UITableViewCellContentView, который один уровень глубже, чем где вы находитесь находясь в поиске.

isKindOfClass: работает правильно, проблемы в том, что вы проходите неправильный набор подзонов.

Кстати, это великолепный пример того, почему вы никогда не должны полагаться на внутренние иерархии взглядов: Apple может изменить их в любое время.

+0

Спасибо Габриэле, я проверю его и дам вам обратную связь. – seymatanoglu