2015-04-01 60 views
1

这是我的第一个问题,所以它可能不是最好的格式。presentViewController给出错误

在我的应用程序中,我想显示下一个屏幕,这是一个单独的工作正常,所以这里应该没有问题。 我使用下面的代码,使过渡

let dataViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Data") 

      self.presentViewController(dataViewController, animated: true, completion: nil) 

在第二行self.presentViewController我得到的错误信息:

不能转换表达式的类型“(AnyObject?动画: BooleanLiteralConvertible,完成:NilLiteralConvertible)”键入 'BooleanLiteralConvertible'

我发现的唯一的答案,一个有同样的错误,是功能是presentViewController而不是presentedViewController。我不得不承认我确实有这个问题。但是在代码中修复这个错误之后,错误消息并没有消失。 任何人都可以告诉我正确的搜索方向,或者有人甚至得到答案。

+0

如果代码库是小,你能不能把它上传到保管箱或地方? – 2015-04-01 11:16:30

+0

尝试将行更改为self.presentViewController(dataViewController!,animated:true,completion:nil)..就像放一个!之后dataViewController – 2015-04-01 11:17:19

+0

感谢您的快速反应,我试图用强制解包,但错误是留在这里。抱歉,我无法上传代码库。 – Adarkas2302 2015-04-01 11:26:07

回答

0

您需要从instantiateViewControllerWithIdentifier指定期望类型,以便让你的视图控制器时,请使用以下行:

let dataViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Data") as UIViewController? 

'as'关键字告知什么是你的回报预期(又名真正的类型的编译器。铸件)。 AnyObject

instantiateViewControllerWithIdentifier返回对象。由于您没有自己指定类型AnyObject(相当于ObjC中的id)将被使用。

presentViewController需要一个UIViewController实例,你给他AnyObject代替,因此错误

+0

你也应该展开了可选的'presentViewController' – Paulw11 2015-04-01 11:21:05

+0

@ Paulw11正确之前,但在这种情况下测试为零,如果故事板是无更好的碰撞在这里,因为它不能是零,否则存在继续反正 – giorashc 2015-04-01 11:22:56

+1

没有一点@giorashc感谢那解决了我的问题。 – Adarkas2302 2015-04-01 12:00:38