带有视图控制器的 Xcode 和 alertview

Posted

技术标签:

【中文标题】带有视图控制器的 Xcode 和 alertview【英文标题】:Xcode and alertview with view controller 【发布时间】:2012-04-25 03:24:58 【问题描述】:

我想要实现的是在单击警报视图按钮时转到另一个视图。我的警报视图在我的 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:..

注意:我的方法是'+'

【问题讨论】:

您可以通过访问视图控制器 self.storyboard 上的属性来访问当前故事板,然后执行 segue 或类似的操作 【参考方案1】:

问题出在这一行:

[secondView presentModalViewController:secondView animated:YES];

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

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

[self presentModalViewController:secondView animated:YES];

否则,您需要获取对可以呈现您的视图控制器的视图的引用。有多种方法可以做到这一点,具体取决于您的应用程序的设置方式,包括从您的应用程序委托获取它或引用应用程序窗口。

【讨论】:

是的,但自我不能,因为我的 alertview 方法是 + no known class method for selector presentmodalviewcontroller animated 我如何获得参考?谢谢! 好吧,你必须存储一个对你想在某处展示它的视图的引用。也许是 AppDelegate 或 Singleton。这确实是实例方法的设计目的,所以如果你想从自我呈现它,你应该将它设置为“-”方法而不是“+”!

以上是关于带有视图控制器的 Xcode 和 alertview的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 5 在带有 WebView 的新视图控制器中加载 URL

带有选项卡视图控制器的 Xcode IOS 转换视图

Xcode 11:无法从带有标识符的情节提要中实例化视图控制器

xcode 从登录重定向到带有 uinavigation 的视图控制器

在 XCode 中平滑滚动视图和表格视图之间的滚动过渡

带有空 UIScrollView 的可滚动内容大小歧义(XCode 6)