Ваша проблема в том, что вы устанавливаете делегата для общего экземпляра здесь
ErrorMessage.shared?.delegate = self / here shared?. is nil
но здесь
guard let viewErrorMessage = Bundle.main.loadNibNamed("ErrorMessage", owner: self, options: nil)?.first as? ErrorMessage else { return}
self.view.addSubview(viewErrorMessage)
вы создаете отдельный экземпляр и добавляете его
Вам нужно
var viewErrorMessage:ErrorMessage! // add to the vc
viewErrorMessage = Bundle.main.loadNibNamed("ErrorMessage", owner: self, options: nil)?.first as! ErrorMessage
viewErrorMessage.delegate = self
self.view.addSubview(viewErrorMessage)
Также полностью избавился от
static weak var shared: ErrorMessage?