Недавно я интегрировал Zendesk в свой проект iOS и столкнулся с проблемой при создании экземпляра пользовательского интерфейса Messaging
, который затем программно вставляю в UINavigationController
. У меня есть следующий код:
import AnswerBotSDK
import AnswerBotProvidersSDK
import ChatSDK
import ChatProvidersSDK
import MessagingSDK
import SupportSDK
import SupportProvidersSDK
import ZendeskCoreSDK
final class ZendeskController {
init() {
// ...Zendesk config stuff
}
func createInstance() -> UIViewController? {
do {
let requestConfiguration = RequestUiConfiguration()
let messagingConfiguration = MessagingConfiguration()
let answerBotEngine = try AnswerBotEngine.engine()
let supportEngine = try SupportEngine.engine()
let chatEngine = try ChatEngine.engine()
let zendeskVC = try Messaging.instance.buildUI(
engines: [answerBotEngine, supportEngine, chatEngine],
configs: [messagingConfiguration, requestConfiguration]
)
return zendeskVC
} catch let error {
print("Error launching Zendesk: \(error)") //TODO: inform user
return nil
}
}
}
Когда я go представляю UIViewController
, сгенерированный createInstance()
в другом контроллере по моему выбору, я делаю следующее:
if let zendeskSupportVC = ZendeskController().createInstance() {
zendeskSupportVC.title = NSLocalizedString("Contact Us", comment: "Contact Us")
let dismissBtn = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(dismissSupportPage))
zendeskSupportVC.navigationItem.rightBarButtonItem = dismissBtn
let navigationController = UINavigationController(rootViewController: zendeskSupportVC)
self.present(navigationController, animated: true)
}
Проблема, с которой я столкнулся, заключается в том, что, несмотря на то, что я создал UIBarButtonItem
и добавил его как rightBarButtonItem
в контроллер представления Zendesk, он не отображается в UINavigationController
, в который я встраиваю его, когда я go, чтобы представить это модально. Кто-нибудь еще сталкивался с этой проблемой?