返回 UIAlertControllerStyle.ActionSheet 中选择的动作
Posted
技术标签:
【中文标题】返回 UIAlertControllerStyle.ActionSheet 中选择的动作【英文标题】:Return the action Selected in UIAlertControllerStyle.ActionSheet 【发布时间】:2014-12-02 11:46:35 【问题描述】:我是 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】: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
【讨论】:
谢谢@kap...我会试试...你能解释一下如何使用'actions'变量吗? 不客气。你指的是哪个变量? class UIAlertController : UIViewController var actions: [AnyObject] get 命令单击 UIAlertController...您可以在 developer.apple.com 上阅读“操作”的描述 您根本不必使用它。只需添加操作并显示操作表。当用户点击按钮时,将调用相关代码 我了解您的解决方案...但是在我学习的过程中,我想知道变量的重要性...谢谢!以上是关于返回 UIAlertControllerStyle.ActionSheet 中选择的动作的主要内容,如果未能解决你的问题,请参考以下文章
swift UIAlertController使用 UIAlertController的宽度 为270
Kotlin 协程Flow 异步流 ① ( 以异步返回返回多个返回值 | 同步调用返回多个值的弊端 | 尝试在 sequence 中调用挂起函数返回多个返回值 | 协程中调用挂起函数返回集合 )
Kotlin 协程Flow 异步流 ① ( 以异步返回返回多个返回值 | 同步调用返回多个值的弊端 | 尝试在 sequence 中调用挂起函数返回多个返回值 | 协程中调用挂起函数返回集合 )