Я знаю, что вы можете отключить кнопки UIAlertAction в UIAlertController, но можно ли удалить кнопку полностью после ее добавления?Как удалить UIAlertAction из UIAlertController в Swift?
ответ
Невозможно удалить действия с добавленного UIAlertController
.
Свойство actions
может возвращать массив добавленных действий, но только get
и не может быть установлен.
Действия добавляются с помощью метода addAction(_:)
, но не существует соответствующего метода removeAction(_:)
.
И, в конечном счете, на самом деле не обязательно иметь смысл снимать действия с контроллера предупреждения после добавления. Обычно вы должны повторно использовать объект контроллера предупреждений после создания экземпляра, поэтому решение состоит в том, чтобы просто добавлять только соответствующие действия в первую очередь.
Вы можете вместо этого реализовать свой собственный класс, полученный из UIAlertController
, и использовать его вместо этого. Вы в основном откладываете настройку действий до UIAlertController
и вместо этого захватываете элементы действия в производном классе, а в viewDidLoad
задаете действия, которые вы сохранили для действий UIAlertController
.
public class MutableUIAlertController : UIAlertController {
var mutableActions:[UIAlertAction] = []
override public func addAction(action: UIAlertAction) {
mutableActions.append(action)
}
public func removeAction(action:UIAlertAction) {
if let index = mutableActions.indexOf(action) {
mutableActions.removeAtIndex(index)
}
}
override public func viewDidLoad() {
for action in mutableActions {
super.addAction(action)
}
super.viewDidLoad()
}
}
Поскольку вы не можете удалить действия, есть простой «грязный» способ. Создание нового предупреждения:
// Objective-C
UIAlertController *replacingNewAlert = [UIAlertController alertControllerWithTitle:yourOldAlert.title message:yourOldAlert.message preferredStyle:yourOldAlert.preferredStyle];
NSMutableArray* mutableActions = yourOldAlert.actions.mutableCopy;
// remove any unwanted actions here ...
for (UIAlertAction *action in mutableActions) {
[replacingNewAlert addAction:action];
}
yourOldAlert = replacingNewAlert;
Конечно, лучший способ - не добавлять действие, которое вы хотите удалить в первую очередь.
- 1. Создание UIAlertAction в Swift
- 2. Получите UIAlertController от UIAlertAction?
- 3. Центрирование изображения в UIAlertAction в UIAlertController
- 4. Запустить UIAlertAction на UIAlertController программно?
- 5. iOS, Swift, UIAlertController, UIAlertAction - Как отключить анимацию при нажатии кнопки?
- 6. Trigger UIAlertAction программного обеспечения UIAlertController
- 7. UIAlertController Swift
- 8. UIAlertController в таблицеViewCell - Swift
- 9. Как изменить размер шрифта и цвет UIAlertAction в UIAlertController
- 10. UIAlertAction отклоняет UIAlertController в своем обратном вызове
- 11. Как получить доступ к себе из UIAlertAction в Swift?
- 12. Swift: UIAlertController выберите подмножество из списка
- 13. Как отключить увольнение UIAlertController в swift
- 14. Как удалить задержку с UIAlertController?
- 15. Swift UIAlertController background color
- 16. tvOS app - UIAlertController сбой с UIAlertAction
- 17. Включить UIAlertAction UIAlertController только после ввода
- 18. Возвращение булевых из UIAlertAction
- 19. Swift - UIAlertController ничего не отображается
- 20. Swift-tvOS отклонение UIAlertController
- 21. Как отключить UIAlertAction в зависимости от UITextField в UIAlertController?
- 22. Как изменить фрейм uialertaction в uialertcontroller в объекте c
- 23. Настройка тега для UIAlertController в SWIFT?
- 24. Предупреждение - попытка представить UIAlertController null в Swift
- 25. Как изменить один цвет текста UIAlertAction в UIAlertController
- 26. Как я могу настроить UIAlertAction в UIAlertController для iOS8?
- 27. Получить обработчик UIAlertAction в Swift
- 28. Swift Добавить стрелку и sourceView в UIAlertController
- 29. Ошибка утечки памяти UIAlertController - Swift
- 30. UIAlertController не отображается - В Swift
Вы не можете подклассифицировать UIAlertController. [Apple Docs] (https://developer.apple.com/documentation/uikit/uialertcontroller) говорят: ** Важно ** ** Класс UIAlertController предназначен для использования как есть и не поддерживает подклассы , Иерархия представления для этого класса является частной и ее нельзя изменять. ** – Austin