iOS-如何在UIAlertConroller swift中的新行中添加动作

时间:2018-08-30 14:05:25

标签: ios swift uialertcontroller

我需要在新行中添加操作,就像:alertActionsWithNewLines

我正在尝试以下代码:

let uncheckInAlert = UIAlertController(title: "Are you sure you want to uncheck-in?", message: "", preferredStyle: .alert)
    uncheckInAlert.setTitleImage(UIImage(named: "fail_Icon"))
    uncheckInAlert.addAction(UIAlertAction(title: "Yes", style: .default, handler: { (action) -> Void in
        self.userUncheckIn()
    }))
    uncheckInAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
    self.present(uncheckInAlert, animated: true, completion: nil)

但是结果是,我有类似alertActionsInOneLine的内容。 如果动作标题很大,则动作会自动在新行上继续。对于小动作标题,将动作分组在一行中。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:0)

尝试将样式表.alert更改为.actionSheet

类似于此代码

let uncheckInAlert = UIAlertController(title: "Are you sure you want to uncheck-in?", message: "", preferredStyle: .actionSheet)

答案 1 :(得分:0)

更改这些行

uncheckInAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))

收件人

uncheckInAlert.addAction(UIAlertAction(title: "Cancel", style: .default, handler: nil))

let uncheckInAlert = UIAlertController(title: "Are you sure you want to uncheck-in?", message: "", preferredStyle: .alert)

收件人

let uncheckInAlert = UIAlertController(title: "Are you sure you want to uncheck-in?", message: "", preferredStyle: .actionSheet)

这将显示cancel选项与其他选项分组。

答案 2 :(得分:0)

您无法设置任何标志来更改Apple布置其警报按钮的方式。但是,如果样式UIAlertController的{​​{1}}无法将按钮文本的整个字符串正确地放置在水平布局中,则会自动将其按钮布局更改为垂直。因此,如果按钮的文本足够长,它将更改布局。

尽管这是一个解决您问题的方法,但我建议您不要在按钮的文本中添加任意空格或不必要的长字符串,这样Apple才能在生产应用程序中垂直布置按钮。它滥用了标准组件,一旦字符串本地化为其他语言,就很容易开始崩溃。为了自然地实现所需的行为,我建议创建自己的自定义视图以垂直显示按钮。