Я хочу сделать страницы обработки ошибок для всех моих контроллеров представлений, поэтому при ошибке извлечения данных ошибка не только показывает диалог, но и показывает файлы XIB, которые содержат сообщение об ошибке и кнопку для обновления. Как это:
Вот код класса XIB:
import UIKit
class ErrorMessage: UIView {
@IBOutlet weak var imageViewError: UIImageView!
@IBOutlet weak var labelError: UILabel!
@IBOutlet weak var buttonTryAgain: UIButton!
static var message: String?
override func awakeFromNib() {
labelError.text = ErrorMessage.message
}
@IBAction func didTapTryAgain(_ sender: Any) {
Dialog.showProgressDialog(info: "")
}
}
Вот мой базовый код контроллера, который решает все проблемы.
import Foundation
class BaseViewController: UIViewController {
var uiView = UIView();
override func viewDidLoad() {
}
func getErrorMessage(message:String) {
super.viewDidLoad()
ErrorMessage.message = message
guard let viewErrorMessage = Bundle.main.loadNibNamed("ErrorMessage", owner: self, options: nil)?.first as? ErrorMessage else { return}
self.view.addSubview(viewErrorMessage)
}
}
А вот как я называю это в другом классе, который я расширяю BaseViewController
, чтобы он мог показать проблему с ошибкой глобально, без повторного объявления класса:
func onFailedDeleteCart(errorMessage: String) {
getErrorMessage(message: errorMessage)
}
Прямо сейчас я могу передать сообщение об ошибке.
Проблема в том, что я хочу, чтобы кнопка Обновить обновляла текущий View Controller, когда я щелкаю по нему. Может быть, вызов текущего ViewDidLoad View Controller при нажатии на него будет хорошей логикой, но я не знаю, как реализовать это в классе XIB. Кто-нибудь может решить эту проблему? Спасибо!