使用 UIViews 和 UIImageViews 数组([[[UIApplication sharedApplication] window] subviews])。我只需要删除 UIImageView 类型的最高索引的对象。
问问题
1565 次
3 回答
6
您可以使用indexOfObjectWithOptions:passingTest:
方法反向搜索数组以查找使用块通过测试的对象,然后删除结果位置的对象:
NSUInteger pos = [myArray indexOfObjectWithOptions:NSEnumerationReverse
passingTest:^(id obj, NSUInteger idx, BOOL *stop) {
return [obj isKindOfClass:[UIImageView class]]; // <<== EDIT (Thanks, Nick Lockwood!)
}];
if (pos != NSNotFound) {
[myArray removeObjectAtIndex:pos];
}
于 2012-02-03T15:36:27.120 回答
5
另一个基于块的解决方案
[window.subviews enumerateObjectsWithOptions:NSEnumerationReverse
usingBlock:^(id view, NSUInteger idx, BOOL *stop)
{
if ([view isKindOfClass:[UIImageView class]]){
[view removeFromSuperview];
*stop=YES;
}
}];
非阻塞解决方案:
for (UIView *view in [window.subview reverseObjectEnumerator])
{
if ([view isKindOfClass:[UIImageView class]]){
[view removeFromSuperview];
break;
}
}
我发布了一些演示代码,显示了两种解决方案。
于 2012-02-03T15:45:57.233 回答
3
怎么样:
UIWindow *window = [[UIApplication sharedApplication] window];
UIView *imageView = nil;
for (UIView *view in window.subviews)
{
if ([view isKindOfClass:[UIImageView class]])
{
imageView = view;
}
}
//this will be the last imageView we found
[imageView removeFromSuperview];
于 2012-02-03T15:34:52.067 回答