3

UIViews と UIImageViews ([[[UIApplication sharedApplication] window] subviews]) の配列を操作します。UIImageView タイプの最高インデックスのオブジェクトのみを削除する必要があります。

4

3 に答える 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 に答える