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 无法按预期工作