带有视图控制器的 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 11:无法从带有标识符的情节提要中实例化视图控制器