0

私は隠れた問題で立ち往生しています。Superview からすべての UIProgressView を削除したい。このように十字ボタンを作成していますが、

crossButton = [[CCMenuItemImage alloc] initWithNormalSprite:[CCSprite spriteWithSpriteFrame:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"close-bttn.png"]] selectedSprite:nil disabledSprite:nil block:^(id sender)
                                     {
                                         [self hideProgressBarForDownload];
                                         [[NSNotificationCenter defaultCenter] postNotificationName:kNotificationInAppLayerClosed object:self userInfo:nil];
                                         [[GameManager sharedGameManager]setCurrentLayer:-1];
                                         [self removeFromParentAndCleanup:YES];
                                     }];

クリックすると、次のメソッドが階層的に呼び出されます

-(void) hideProgressBarForDownload
{
    [[DownloadManager sharedDownloadManager]removeAllProgressbarsIfvisible];
}

-(void)removeAllProgressbarsIfvisible
{
    NSArray * allkeys = [currentDownloads allKeys];

    for (int i = 0; i < [allkeys count]; i++)
    {
        NSString *key = [allkeys objectAtIndex:i];
        DownloadItem * item = [currentDownloads valueForKey:key];
        UIProgressView * progress = item.progressIndicator;
        //progress.hidden = YES;
        if (progress.superview)
        {
            [progress removeFromSuperview];
        }
    }
 }

すべてのコードが正しいと思いますが、なぜそれらが削除されないのかわかりません。

前もって感謝します。

4

2 に答える 2

1

このようにしてみてください、ボタンアクションアクションメソッドにこのコードを入れてください

for(UIView *view in self.view.subviews){
        if([view isKindOfClass:[UIProgressView class]]))
            [view removeFromSuperView];
    }
于 2013-07-03T11:02:31.770 に答える
0

特定のビューからすべてのプログレス バーを削除します。

- (void) removeAllProgressBars:(UIView *)view {

    if([view isKindOfClass:[UIProgressView class]]))
       [view removeFromSuperView];
    else 
       for (UIView *subView in view.subviews) 
         [self removeAllProgressBars:view];
}

他のメソッド呼び出しでは:

[self removeAllProgressBars:self.view];

for や if や else などの 1 ステートメントの本文に中括弧を使用しないのは、コーディング スタイルが悪いと思いますが。

于 2013-07-03T11:16:32.643 に答える