UIAlertAction с текстом кнопки другого цвета

Я пытаюсь создать UIAlertAction с текстом черного цвета для первой кнопки и синим для второй. Если я изменю оттенок, все станет черным, но я не могу изменить первую кнопку на черную без нее. Ниже мой код:

let alert = UIAlertController(title: "", message: "", preferredStyle: .actionSheet)
// alert.view.tintColor = UIColor.black

alert.addAction(UIAlertAction(title: "First", style: .cancel, handler: nil))

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

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

person user1079052    schedule 14.03.2017    source источник
comment
Я не думаю, что UIAlertController позволяет использовать разные цвета для разных кнопок, кроме заданного стиля, т.е. отмены, по умолчанию и т. д.   -  person Rajan Maheshwari    schedule 14.03.2017
comment
Цвет основан на стиле: .cancel — черный, .default — черный, а .destructive — красный. Невозможно изменить цвет, если вы не создадите свой собственный UIAlertController.   -  person creeperspeak    schedule 14.03.2017
comment
Вовсе нет, кнопки UIAlertController, как и некоторые другие контроллеры PopUp, используют цвет из ```window.tint``. Если вы переопределяете этот цвет, то цвета по умолчанию меняются на ваш цвет.   -  person iTux    schedule 31.07.2018


Ответы (2)


Я смог сделать это, добавив этот или каждый цвет

let cancelAlert = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.default, handler:nil)
                cancelAlert.setValue(UIColor.blue, forKey: "titleTextColor")
                alert.addAction(cancelAlert)
person user1079052    schedule 15.03.2017
comment
Я использовал его в объектном C, это приводит к сбою приложения. любое предложение для цели C ??? - person gEeKyMiNd; 07.06.2017
comment
Я не пробовал, но вот несколько предложений для цели c stackoverflow.com/questions/36662233/ - person user1079052; 08.11.2017

Для тех, кто здесь, чтобы просто изменить цвет кнопки действия, вы можете изменить стиль, например, .destructive для кнопки удаления:

 alert.addAction(UIAlertAction(title: "Delete", style: .destructive, handler:{(UIAlertAction) in
person fullmoon    schedule 22.07.2017
comment
Это работает, когда программист знает, что кнопка будет представлять действие, которое изменит или удалит данные. Он превращает цвет заголовка действия в красный, но его не следует использовать для явного изменения цвета заголовка. Если, конечно, вы не ожидаете, что он будет красным. Лучший способ изменить цвет заголовка — это ответ @user1079052. Тем не менее, это оставляет шанс, что Apple изменит строку ключа в будущем, так что имейте в виду. - person andrewlundy; 20.06.2021