我是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)
我理解我可以在处理程序中标记一些变量...但是有没有更好的方法来获取用户选择的选项?
但我仍无法找到解决方案。
请帮忙
答案 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