下面的代码在IOS 5.0,6.0,6.1等上返回“YES”,但在IOS 7.0上返回“NO”。 窦你对此有所了解吗? 这是IOS 7.0的错误吗? 非常感谢..
[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;
答案 0 :(得分:7)
UITableViewCell
的视图层次结构在iOS 7中略有改变
在iOS< = 6中,层次结构看起来像
<UITableViewCell>
| <UITableViewCellContentView>
| | <UILabel>
而在iOS 7中,它就像
<UITableViewCell>
| <UITableViewCellScrollView>
| | <UIButton>
| | | <UIImageView>
| | <UITableViewCellContentView>
| | | <UILabel>
(来源:http://www.curiousfind.com/blog/646)
当您添加子视图时,它会插入UITableViewCellContentView
,这比您要查找的位置深一级。
isKindOfClass:
正常运行,问题在于您正在浏览错误的子视图集。
顺便说一下,这是一个很好的例子,说明为什么你不应该依赖内部视图层次结构:Apple可以随时更改它们。