UIActionsheet不显示运行iOS7的iPad上的所有按钮

时间:2014-11-21 11:21:21

标签: ios ipad ios7 swift uiactionsheet

在运行iOS7的iPad上无法正确显示UIActionSheet的实例。出于某种原因,他们会显示取消按钮并取消最后一个按钮。相同的代码在iOS8上运行良好。

如果点击屏幕上的其他位置将关闭操作表,您可能会忽略取消按钮。有谁知道为什么会这样?

在这两种情况下都使用完全相同的代码:

// Create UIActionSheet    
let mapOptions = UIActionSheet(title: "Select map type", delegate: self, cancelButtonTitle: "Cancel", destructiveButtonTitle: nil, otherButtonTitles: "Standard", "Hybrid", "Satellite")

// Display from bar button
mapOptions.showFromBarButtonItem(self.mapTypeButton, animated: true)

comparison of UIActionSheet instances on iOS 7 and 8

2 个答案:

答案 0 :(得分:5)

我能够通过避免默认的UIActionSheet构造函数并单独添加按钮来解决问题。这 - 并确保最后添加取消按钮 - 解决了问题。

// Create the UIActionSheet
var mapOptions = UIActionSheet()
mapOptions.title = "Select map type"
mapOptions.addButtonWithTitle("Standard")
mapOptions.addButtonWithTitle("Hybrid")
mapOptions.addButtonWithTitle("Satellite")

// Add a cancel button, and set the button index at the same time
mapOptions.cancelButtonIndex = mapOptions.addButtonWithTitle("Cancel")
mapOptions.delegate = self

// Display the action sheet
mapOptions.showFromBarButtonItem(self.mapTypeButton, animated: true)

答案 1 :(得分:3)

我遇到了与Swift相同的问题。你的回答救了我。 我发现你仍然可以使用这个init方法(取消按钮为nil)使你的代码更简洁。

let mapOptions = UIActionSheet(title: "Select map type", delegate: self, cancelButtonTitle: nil, destructiveButtonTitle: nil, otherButtonTitles: "Standard", "Hybrid", "Satellite")

然后使用您提供的行

mapOptions.cancelButtonIndex = mapOptions.addButtonWithTitle("Cancel")

(我没有足够的声誉来添加评论,所以请写在这里。)