iOS8 上的 UIActionSheet

UIActionSheet on iOS8

我有一个连接到 Chromecast 的应用程序 - 我引用了 Chromecast 示例代码,它使用 UIActionSheet 显示我可以连接到的 Chromecast 设备列表。

这对我的 运行 BaseSDK=iOS6.1 应用运行良好。最近我尝试升级到 BaseSDK=iOS8.1,但 UIActionSheet 不再显示。

我知道它在 iOS8 中已被弃用,但这是否意味着它不再有效?我认为弃用的方法通常需要一些时间才能 "phase out".

所以我的主要问题是:-

  1. 我还能只使用 UIActionSheet 吗?是否只是更改视图层次结构的问题,这就是我的 ActionSheet 不再显示的原因?
  2. 如果问题 1 的答案是否定的,我该怎么做才能同时兼容 iOS7 和 iOS8。

使用 iOS8.1 sdk UIActionSheet 已弃用,您应该进行运行时检查以查看它是否可用并使用正确的 class:

进行相应操作
    if objc_getClass("UIAlertController") != nil {
// UIAlertController is available use it with style UIAlertControllerStyleActionSheet
    } else {
// no UIAlertController use regular old action sheet
    }

对于 iOS8 和上面的你,你必须迁移到 UIAlertController 来执行操作 sheet 和弹出警报。

老实说,我发现新的 API 更易于使用。还有一点 here(在 Swift 中,但在 Objective C 中并不难)。