1

私が達成しようとしているのは、アラートビューボタンがクリックされたときに別のビューに移動することです。私のアラート ビューは、loadingView 内にあります。このアラート ビューは、classA という別のクラスから呼び出されます。

これは、classA で呼び出される方法です。

[LoadingViewController showError];

これは、loadingView クラスの loadingView 内のメソッドです。

+ (void)showDestinationError{
UIAlertView *alert = [[UIAlertView alloc] 
                      initWithTitle:@"Error" 
                      message:@"Error"
                      delegate:self 
                      cancelButtonTitle:@"OK" 
                      otherButtonTitles: nil];
alert.tag = DEST_ERR;
[alert show];
}

ボタンアクション

+ (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(alertView.tag = DEST_ERR){

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
    UINavigationController *secondView = [storyboard instantiateViewControllerWithIdentifier:@"NavigationController"];
    secondView.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;    
    [secondView presentModalViewController:secondView animated:YES];
}
}

これは私にエラーを与えます。'アプリケーションは、モーダル ビュー コントローラーを自身に提示しようとしました。提示するコントローラーは UINavigationController:..

注:私の方法は「+」です

4

1 に答える 1

5

問題は次の行です。

[secondView presentModalViewController:secondView animated:YES];

View Controller はそれ自体を提示することはできず、この場合はまだ存在すらしていません)。

これを修正する最も明白な方法はclickedButtonAtIndex、特定のインスタンスに関する情報にアクセスする必要があるため、インスタンス メソッドを作成することです。次に、これを使用します。

[self presentModalViewController:secondView animated:YES];

それ以外の場合は、View Controller を表示できるビューへの参照を取得する必要があります。これを行うには、アプリのデリゲートからの取得やアプリ ウィンドウの参照など、アプリのセットアップ方法に応じてさまざまな方法があります。

于 2012-04-25T04:05:29.787 に答える