23

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

我使用presentModelViewController:然后我将其关闭,但它给了我警告

dismissModalViewControllerAnimated 在 iOS 6 中首先被弃用。

为什么他们对该代码显示警告?这是代码:

[picker dismissModalViewControllerAnimated:YES];

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

4

3 回答 3

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];
于 2012-10-04T08:59:18.310 回答
4

如果您的部署目标设置为 iOS 6,您应该只收到弃用警告。所以我会检查您的部署目标,这可能设置为 Xcode 默认值。将其更改为 4.3 后,弃用警告应该会消失。

于 2012-10-04T14:00:19.137 回答
2

您可以使用dismissViewControllerAnimated:completioniOS开发者文档中的 ,

解除视图控制器动画:完成:

关闭接收者呈现的视图控制器。- (void)dismissViewControllerAnimated:(BOOL)标志完成:(void (^)(void))完成参数

旗帜

Pass YES to animate the transition. completion

A block called after the view controller has been dismissed.

讨论

呈现视图控制器负责关闭它呈现的视图控制器。如果您在呈现的视图控制器本身上调用此方法,它会自动将消息转发到呈现的视图控制器。

如果您连续呈现多个视图控制器,从而构建一个呈现视图控制器的堆栈,则在堆栈中较低的视图控制器上调用此方法会解除其直接子视图控制器以及堆栈上该子视图控制器上方的所有视图控制器。发生这种情况时,只有最顶层的视图会以动画方式消失;任何中间视图控制器都简单地从堆栈中删除。最顶层的视图使用其模态转换样式被解除,这可能与堆栈中其他视图控制器使用的样式不同。

如果要保留对接收者呈现的视图控制器的引用,请在调用此方法之前获取 presentViewController 属性中的值。

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

Available in iOS 5.0 and later.
于 2012-09-28T21:18:36.410 回答