0

私のアプリケーションでは、ユーザーが次のView Controllerに移動している間、キャンセルボタンでインジケーターを表示しています。キャンセルボタンをクリックすると、1つの変数の値を-2に設定appDel.Val = -2;し、次のコントローラーにプッシュする前に、その場合appDel.Val = -2;に戻るかどうかを確認します。したがって、それ以上のプロセスは必要ありません。

これは iOS6 デバイスで正常に動作します。ユーザーが Alert クリックの Delegate メソッドでキャンセルをタップするUIAlertViewと、すぐに呼び出しが行われ、appDel.Val=-2 に値が設定されます。したがって、それ以上のプロセスなしで返されます。

ビット iOS7 では、ユーザーがアラートでキャンセルをタップすると、プッシュ ビュー コントローラーの現在のプロセスが完了した後にアラートビュー デリゲート メソッドが呼び出されるなどの問題が発生します。アラートデリゲートappDel.Val=-2メソッドは iOS 6 のようにすぐには呼び出されないため、アラート クリック メソッドからコントローラーをプッシュした後に設定されます。

iOS 7でこれを修正するにはどうすればよいですか?

これが私のコードです。

-(void)goToNextViewController:(NSDictionary*)outputDictionary
{
    myViewController *mtvc=[appDel.myDict valueForKey:[outputDictionary valueForKey:@"id"]];
    if (mtvc) {
        [appDel showindicator:@"Please Wait..."];
    }else{
        [appDel showindicator:@"Connecting..."];
    }

    [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]];
    self.rootDict = [[NSMutableDictionary alloc] initWithDictionary:outputDictionary];
    appDel.activeId = [outputDictionary valueForKey:@"id"];

    if(!mtvc)
    {
        myViewController *mtvc = [[myViewController alloc]initWithNibName:@"myViewController" bundle:nil];
        appDel.tempViewController=mtvc;
        appDel.tempViewController.isVeryFirst = YES;
        [mtvc release];
    }
    else
    {
        appDel.tempViewController=mtvc;
        appDel.tempViewController.isVeryFirst = NO;
        @try {
            [self.navigationController pushViewController: mtvc animated: YES];
        }
        @catch (NSException * e) {
            NSLog(@"Exception: %@", e);
        }

        [appDel performDismiss];
        return;
    }

    if (appDel.Val==-2)
    {
        [appDel.newConnections removeObjectForKey:appDel.activeId];
        appDel.tempViewController.isNewConnection = NO;
        appDel.Val = 0;
        [appDel performDismiss];
        return;
    }

    [appDel.newConnections setObject:appDel.tempViewController forKey:[outputDictionary valueForKey:@"id"]];
    [self.navigationController pushViewController: appDel.tempViewController animated: YES];

    [appDel performDismiss];

}

アラートクリック

- (void)alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(alert.tag==654)
{
    self.Val = -2;
    [baseAlert dismissWithClickedButtonIndex:0 animated:YES];
    baseAlert=nil;
}
}

助けてくれてありがとう。

4

0 に答える 0