Нет прямого метода для установки определенной кнопки на листе действий. Вы можете сделать это таким образом, чтобы сделать его счастливым.
- Создайте пользовательский подкласс UIAlertController, назовем его TestAlertController.
- Переопределите метод viewDidAppear, чтобы найти метку, которую вы хотите изменить.
- Просто используйте TestAlertController.
Вот код в ipod (ios 9.3), вы можете попробовать.
class TestAlertController: UIAlertController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let subViews = self.view.subviews[0].subviews[1].subviews[0].subviews
for view in subViews {
if view.isKind(of: NSClassFromString("UICollectionView")!) {
if let modifyView = view.subviews[1].subviews[0].subviews[0].subviews[0].subviews[0] as? UILabel {
print(modifyView)
modifyView.tintColor = UIColor.red
}
}
}
}
}
Но в симуляторе iPhone8 plus (iOS 11) все по-другому, код:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if #available(iOS 9.0, *) {
if let stackView = self.view.subviews[0].subviews[0].subviews[1].subviews[1].subviews[0].subviews[0] as? UIStackView {
let view = stackView.arrangedSubviews[2]
if let label = view.value(forKeyPath: "_actionContentView._label") as? UILabel {
label.tintColor = UIColor.red
}
print("hard to locate...")
}
}
}
Вот снимок экрана:
Этот метод должен проверяться на каждой версии iOS или, возможно, iPhone. Я не думаю, что это хороший способ. Но я не могу найти лучший путь. Может ли кто-нибудь сказать мне лучший способ?