isKindOfClass 不能按预期工作 IOS 7

Posted

技术标签:

【中文标题】isKindOfClass 不能按预期工作 IOS 7【英文标题】:isKindOfClass does not work as expected IOS 7 【发布时间】:2013-08-26 07:57:34 【问题描述】:

下面的代码在 ios 5.0、6.0、6.1 等上返回“YES”,但在 IOS 7.0 上返回“NO”。 你对此有什么想法吗? 是 IOS 7.0 的错误吗? 非常感谢..

[view isKindOfClass:[SimpleLabel class]]

PS:“SimpleLabel”是一个继承自UILabel的类。

----更新----

对不起,不清楚的问题。 :( 我在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;

【问题讨论】:

请注意,iOS7 和 Xcode 5 仍受保密协议保护,这会限制您在官方 Apple 开发者论坛之外谈论它。 我打赌你的“观点”是零 这个问题似乎是题外话,因为它是关于处于保密协议下的 iOS 7。 对于因保密协议而希望拒绝或关闭投票的任何人,请参阅:Should moderators enforce NDAs for software vendors? 和相关问题。执行或监管其他方之间的 NDA 不是 SO 的政策、责任或关注点。询问任何类型的保密协议可能涵盖的主题并非题外话 我有一段时间没有查看 Apple 的 iOS NDA,因为我目前没有订阅 iOS 开发者计划,但完全有可能那些声称这个问题违反了 iOS7 NDA 的人可能是违反 iOS7 NDA。 NDA 通常有一个条款阻止您讨论 NDA 涵盖的内容:) 【参考方案1】:

UITableViewCell 的视图层次在 iOS 7 中略有变化

在 iOS

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

而在 iOS 7 中就像

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

(来源:http://www.curiousfind.com/blog/646)

当您添加子视图时,它会插入到比您要查找的位置深一级的UITableViewCellContentView 中。

isKindOfClass: 工作正常,问题是您正在通过错误的子视图集。

顺便说一句,这是一个很好的例子,说明了为什么你永远不应该依赖内部视图层次结构:Apple 可以随时更改它们。

【讨论】:

谢谢Gabriele,我会检查一下并给你反馈。

以上是关于isKindOfClass 不能按预期工作 IOS 7的主要内容,如果未能解决你的问题,请参考以下文章

Cordova iOS - inAppBrowser 未按预期工作

没有缓存的 iOS NSURLSessionConfiguration 无法按预期工作

iOS 崩溃报告:atos 未按预期工作

JSON 在 iOS 上无法按预期工作

新的 SwiftUI/iOS 15.0 .animation 未按预期工作

为啥 itertools groupby 不能按预期工作? [复制]