0

プロセスの開始時にメッセージを作成し(BOOL YES)、プロセスの終了時にメッセージを削除しようとしています(BOOL NO)。デバッグでは、関数全体を最初と最後の両方でステップ実行していることが示されますが、メッセージはまだそこにあります。 。

どこが間違っているのですか?前もって感謝します

-(void) loadStillLoadingMessage:(BOOL)yesNo{
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
CGFloat screenWidth = screenSize.width;
CGFloat screenHeight = screenSize.height;
UILabel *loading = [[[UILabel alloc]initWithFrame:CGRectMake((screenWidth/2)-75,(screenHeight)-140,300,40)]autorelease];

loading.text = @"still loading";
loading.backgroundColor = [UIColor clearColor];
loading.textColor = [UIColor blueColor];
loadingLabel = loading;
[self.view addSubview:loadingLabel];
[loadingLabel setHidden:YES];
if (yesNo == YES) {
    [loadingLabel setHidden:NO];
}else if (yesNo ==NO){
    [loadingLabel setHidden:YES];
}

}

4

2 に答える 2

1

あなたが持っている問題は、self.viewから古いロードを削除しなかったことです。

-(void) loadStillLoadingMessage:(BOOL)yesNo{
    CGRect screenBound = [[UIScreen mainScreen] bounds];
    CGSize screenSize = screenBound.size;
    CGFloat screenWidth = screenSize.width;
    CGFloat screenHeight = screenSize.height;
    UILabel *loading = [[[UILabel alloc]initWithFrame:CGRectMake((screenWidth/2)-75,    (screenHeight)-140,300,40)]autorelease];

    loading.text = @"still loading";
    loading.backgroundColor = [UIColor clearColor];
    loading.textColor = [UIColor blueColor];
    loadingLabel = loading;

    //removing the previous label from the self.view if exist
    loadingLabel.tag = 999;
    [[self.view viewWithTag:999] removeFromSuperview];

    [self.view addSubview:loadingLabel];
    [loadingLabel setHidden:YES];
    if (yesNo == YES) {
         [loadingLabel setHidden:NO];
    }else if (yesNo ==NO){
      [loadingLabel setHidden:YES];
    }

}

于 2012-11-26T02:08:33.317 に答える
1

このメソッドは、UIView呼び出されるたびに作成します。したがって、UIView最初に作成して表示するのは、2回目に作成して表示してから非表示にするのとは異なりUIViewます。インスタンス変数を確認する必要があります(ヘッダーファイルで変数を宣言します)。

于 2012-11-26T02:05:40.447 に答える