返回UIAlertControllerStyle.ActionSheet中选定的动作

时间:2014-12-02 11:46:35

标签: ios swift uialertcontroller

我是Swift和iOS开发的新手。 我试图从ActionSheet获取排序方法。 这是我的代码:

    var alert = UIAlertController(title: "Sort", message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet)

    alert.addAction(UIAlertAction(title: "Price: Low to High", style: UIAlertActionStyle.Default, handler: nil))

    alert.addAction(UIAlertAction(title: "Latest", style: UIAlertActionStyle.Default, handler: nil))

    alert.addAction(UIAlertAction(title: "Price: High to Low", style: UIAlertActionStyle.Default , handler: nil))

    alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil))

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

我理解我可以在处理程序中标记一些变量...但是有没有更好的方法来获取用户选择的选项?

我读过这个:https://developer.apple.com/library/ios/documentation/Uikit/reference/UIAlertController_class/index.html#//apple_ref/occ/instm/UIAlertController/addAction

但我仍无法找到解决方案。

请帮忙

1 个答案:

答案 0 :(得分:1)

swift在处理警报视图/操作表时采用了一种新方法。当您向UIAlertAction添加UIAlertController时,会有一个名为handler的参数。这是代码(称为闭包),当用户选择操作表上的某个操作时,将调用该代码。 最终的代码看起来像这样

enum SortType {
    case PriceLowToHigh, Latest, PriceHighToLow
}

func sort(sortType: SortType) {
    //do your sorting here depending on type
}

var alert = UIAlertController(title: "Sort", message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet)

alert.addAction(UIAlertAction(title: "Price: Low to High", style: UIAlertActionStyle.Default) { (_) -> Void in sort(SortType.PriceLowToHigh) } )

alert.addAction(UIAlertAction(title: "Latest", style: UIAlertActionStyle.Default) { (_) -> Void in sort(SortType.Latest) } )

alert.addAction(UIAlertAction(title: "Price: High to Low", style: UIAlertActionStyle.Default) { (_) -> Void in sort(SortType.PriceHighToLow) } )

alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil))]

你可以(并且应该)阅读有关闭包的更多信息here