UIActionSheet相信大家都用过,其应用场景还是比较多的,像App中设置用户头像时,选择从相册或拍照来获取头像。还有其他很多场景就不一一列举了。凡此种种都有一个前提条件就是,我们已经知道了有多少个可供选择的项。此时我们就可以用下面的初始化方法去实现:
UIActionSheet(title: "请选择您的婚姻状况", delegate: self, cancelButtonTitle: "取消", destructiveButtonTitle: nil, otherButtonTitles: "已婚", "未婚")
那么问题来了,当我不知道otherButtonTitles到底有多少项时,或者说这个选项数量不定,动态变化的,怎么办?好在天无绝人之路,UIActionSheet还是为我们提供了解决方案的,因为这个很简单,直接上代码。
//假设变量nations是从服务器获取的所有名族的列表,里面的数量不定
let actionSheet: UIActionSheet = UIActionSheet(title: "请选择您的名族", delegate: self, cancelButtonTitle: "取消", destructiveButtonTitle: nil, otherButtonTitles: nations[0]) //先传入第一个元素
for var i: Int = 1; i < nations.count; i++ { //此处忽略已经加入的第一个元素,然后追个元素加入即可
actionSheet.addButtonWithTitle(nations[i])
}
iOS8以后,UIActionSheet已被UIAlertController替代,不建议使用。因此有必要介绍一下UIAlertController在此种情况下的用法。
let nations: Array<String> = ["汉族", "壮族", "哈尼族", "彝族"]
let alertController = UIAlertController(title: "请选择您的名族", message: nil, preferredStyle: UIAlertControllerStyle.ActionSheet)<span style="white-space:pre"> </span>//以ActionSheet风格展示UIAlertController
let cancelAction: UIAlertAction = UIAlertAction(title: "取消", style: UIAlertActionStyle.Cancel, handler: nil)
alertController.addAction(cancelAction) //增加取消按钮
for var i: Int = 0; i < nations.count; i++ {//逐条增加选择项
let defaultAction: UIAlertAction = UIAlertAction(title: nations[i], style: UIAlertActionStyle.Default, handler: nil)
alertController.addAction(defaultAction)
}
self.presentViewController(alertController, animated: true, completion: nil) //展示ActionSheet
ActionSheet中动态添加选项就介绍至此。