在我的应用程序的某些点上,我在keyWindow中添加了UIView
,在其他点我需要检索它以便操作它。
我添加了这样的视图:
self.minimizedView = [[UIViewCustomSubclass alloc] initWithFrame:viewFrame];
[[UIApplication sharedApplication].keyWindow addSubview:self.minimizedView];
后来,在另一个类中,我试图遍历keyWindow的子视图,如下所示:
for (id subview in [UIApplication sharedApplication].keyWindow.subviews) {
NSLog(@"VIEW: %@ CLASS %@", [subview description], [subview class]);
}
我在这里使用 id 因为我想在访问正确的子视图时是类型安全的,因为我需要移动它的帧,我想确保我只移动正确的子视图。 ..进一步到那时,我已经将UIView
子类化了,并创建了我要添加到keyWindow的视图...
在上面的for循环中,我试图要求isMemberOfClass:
if ([subview isMemberOfClass:[UIViewCustomSubclass class]]) {
NSLog(@"The Subview %@ of Class %@ Should Be The One We Are Looking For", [subview description], [subview class]);
// assign subview to iVar etc
}
但这永远不会执行 - 子视图总是将它的类类型记录为UIView
(超类),但从不记录子类...我设置了一个断点并在该点检查了View属性我把它添加到keyWindow,它似乎是正确的子类类型......
有人能发现我做错的事吗?
- 编辑 -
OOPS。我刚刚在我的代码中找到了一个边缘情况/位置,我将视图仍然分配为UIView而不是子类 - 这解决了问题。