在ios 6中首先弃用dismissmodalviewcontrolleranimated

时间:2012-09-28 13:18:08

标签: iphone

我刚刚更新了iOS 6,并运行了我在iOS 4.3中创建的旧代码。他们在我的申请中给了我一些警告。

我使用presentModelViewController:然后我解雇了它,但它给了我警告

  

在iOS 6中首先弃用了dismissModalViewControllerAnimated。

为什么他们会对该代码发出警告?这是代码:

[picker dismissModalViewControllerAnimated:YES];

此行变黄并显示错误。请给我指导,删除警告。

4 个答案:

答案 0 :(得分:60)

现在在ios 6中你可以使用

[[Picker presentingViewController] dismissViewControllerAnimated:YES completion:nil];

而不是

[[Picker parentViewControl] dismissModalViewControllerAnimated:YES];

[self presentViewController:picker animated:YES completion:nil];

而不是

[self presentModalViewController:picker animated:YES];

答案 1 :(得分:4)

如果您的部署目标设置为iOS 6,则只应获取弃用警告。因此,我会检查您的部署目标,该目标可能设置为Xcode默认值。将此值更改为4.3后,弃用警告应消失。

答案 2 :(得分:2)

您可以使用iOS Developer文档中的dismissViewControllerAnimated:completion

  

dismissViewControllerAnimated:完成:

     

解散接收者提供的视图控制器。    - (void)dismissViewControllerAnimated:(BOOL)标志完成:(void(^)(void))完成参数

     

标志

Pass YES to animate the transition. completion

A block called after the view controller has been dismissed.
     

讨论

     

呈现视图控制器负责解除视图   它呈现的控制器。如果在显示的视图上调用此方法   控制器本身,它会自动将消息转发给   呈现视图控制器。

     

如果你连续出现几个视图控制器,那么建立一个   堆栈的呈现视图控制器,在视图上调用此方法   堆栈中较低的控制器会解除其直接的子视图   控制器和堆栈上该子节点上方的所有视图控制器。   发生这种情况时,只有最顶层的视图在动画中被解除   时尚;任何中间视图控制器都可以从中删除   堆。最顶层的视图使用其模态转换被忽略   样式,可能与其他视图控制器使用的样式不同   在堆栈中较低。

     

如果您想保留对接收者呈现视图的引用   controller,获取presentViewController属性中的值   在调用此方法之前。

     

在viewDidDisappear:方法之后调用完成处理程序   调用了呈现的视图控制器。可用性

Available in iOS 5.0 and later.

答案 3 :(得分:2)

我改变了我的代码

[self dismissModalViewControllerAnimated:YES];

[self dismissViewControllerAnimated:YES];

并收到错误: 'KLPARewardController'没有可见的@interface声明选择器'dismissViewControllerAnimated:'