Xcode和uialertview与视图控制器

时间:2012-04-25 03:24:59

标签: xcode viewcontroller alertview

我想要实现的是在单击我的警报视图按钮时转到另一个视图。我的警报视图在我的loadingView中,这个警报视图是从另一个名为classA的类中调用的。

这是在classA中调用的方式。

[LoadingViewController showError];

这是在loadingView类中加载View的方法。

+ (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:..

注意:我的方法是'+'

1 个答案:

答案 0 :(得分:5)

问题在于这一行:

[secondView presentModalViewController:secondView animated:YES];

视图控制器无法呈现自身,在这种情况下甚至还不存在。)

解决此问题的最明显方法是使clickedButtonAtIndex实例方法,因为它需要访问有关特定实例的信息。然后你会用它:

[self presentModalViewController:secondView animated:YES];

否则,您需要获得可以呈现视图控制器的视图的引用。有多种方法可以执行此操作,具体取决于您的应用程序的设置方式,包括从您的应用程序委托中获取或引用应用程序窗口。