Fah*_*kar 0 objective-c uitableview uiview ios
我有UITableViewCell,我在其中添加一个UIView内部,我将子视图添加为UIButton,UIImageView.
现在我想访问UIView willDisplayCell.为此我在下面.
NSArray *subviews;
subviews = cell.subviews;
int xxyyzz = 1;
for(id aView in subviews) {
NSLog(@"aView====%@" , [UIView class]);
if([aView isKindOfClass:[UIView class]]) {
NSLog(@"This is UIView... Do what you want to do...");
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行时,我将This is UIView... Do what you want to do...获得所有子视图(即UIButton,UIImageView等).aView====UIView
我相信这是因为,UIView是所有对象的超类.
UITableViewCell...我没有完全解决你的问题,但可能在使用该方法时存在误解-isKindOfClass.特别是应对方法是类和subclassess, UIButton,UITableView等都是子类UIView这样的方法按预期工作,这里的文档:
返回一个布尔值,指示接收者是给定类的实例还是从该类继承的任何类的实例.
最有可能你想要使用-isMemberOfClass它只考虑对象是特定类的实例.
如果要检查的对象来自类集群,例如NSArray引用Apple文档,则还必须使用该方法注意:
在类集群表示的对象上使用此方法时要小心.由于类集群的性质,您获得的对象可能并不总是您期望的类型.如果调用返回类集群的方法,则该方法返回的确切类型是您可以对该对象执行的操作的最佳指示.例如,如果方法返回指向NSArray对象的指针,则不应使用此方法来查看该数组是否可变,如以下代码所示:
// DO NOT DO THIS! if ([myArray isKindOfClass:[NSMutableArray class]])
{
// Modify the object
}
Run Code Online (Sandbox Code Playgroud)
如果在代码中使用此类构造,您可能认为修改实际上不应修改的对象是可以的.这样做可能会为期望对象保持不变的其他代码产生问题.
如果接收者是一个类对象,如果aClass是相同类型的Class对象,则此方法返回YES,否则返回NO.
| 归档时间: |
|
| 查看次数: |
170 次 |
| 最近记录: |