0

定義するためにこのコードを書きましたUIAlertView

-(void)showAlertMethod2 {
progressAlert2 = [[UIAlertView alloc] initWithTitle:@"تتم المزامنة..يرجى الانتظار ...\n" message:@"" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
CGRect alertFrame = progressAlert2.frame;
UIActivityIndicatorView* activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
activityIndicator.frame = CGRectMake(135,alertFrame.size.height+55, alertFrame.size.width,30);
activityIndicator.hidden = NO;
activityIndicator.contentMode = UIViewContentModeCenter;
[activityIndicator startAnimating];
[progressAlert2 addSubview:activityIndicator];
[progressAlert2 show];
}

-(void)dismissAlertMethod2
{
[progressAlert2 dismissWithClickedButtonIndex:0 animated:YES];
}

そして、私はここに電話しています:

[NSThread detachNewThreadSelector:@selector(showAlertMethod2) toTarget:self withObject:nil];

[self performSelector:@selector(syncToServer) withObject:nil];
[self performSelector:@selector(syncFromServer) withObject:nil]

[NSThread detachNewThreadSelector:@selector(dismissAlertMethod2) toTarget:self withObject:nil];

syncToServerサーバーにデータを同期する方法であり、サーバーにsyncFromServerデータを同期することです

問題は、UIAlertViewショーがないことです。前もって感謝します。

4

3 に答える 3

1

をにも使用してNSThread detachNewThreadSelector:います。つまり、アラートを表示するための 2 つと、それを無視するための2 つがあります。したがって、どちらが最初に終了するかはわかりません。そのため、UIAlertView を閉じる 2 番目のスレッドが最初に終了する可能性があります。これにより、表示が妨げられます。ShowUIAlertViewdismissUIAlertViewNSThreadsThreadUIAlertView

UIAlertViewメソッドごとに新しいスレッドを作成せずに を呼び出してみてください。

[self showAlertMethod2];
[self dismissAlertMethod2];
于 2013-06-10T13:28:48.757 に答える
0
-(void)showAlertMethod2 {
    progressAlert2 = [[UIAlertView alloc] initWithTitle:@"تتم المزامنة..يرجى الانتظار ...\n" message:@"" delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
    CGRect alertFrame = progressAlert2.frame;
    UIActivityIndicatorView* activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
    activityIndicator.frame = CGRectMake(135,alertFrame.size.height+55,    alertFrame.size.width,30);
    activityIndicator.hidden = NO;
    activityIndicator.contentMode = UIViewContentModeCenter;
    [activityIndicator startAnimating];
    [progressAlert2 addSubview:activityIndicator];
    [progressAlert2 show];
}

-(void)dismissAlertMethod2
{
    [progressAlert2 dismissWithClickedButtonIndex:0 animated:YES];
}

これはあなたの方法です。

今、それらを次のように呼び出します

-(void)syncBothWay{
    [self showAlertMethod2];
    [self performSelector:@selector(syncToServer) withObject:nil afterDelay:0.0];
    [self performSelector:@selector(syncFromServer) withObject:nil afterDelay:0.0];
}

-(void)syncToServer{
    //sync
}

-(void)syncFromServer{
    //sync
    after sync completed call [self dismissAlertMethod2];
}
于 2013-06-10T12:15:22.040 に答える