Я думаю, что вы должны хранить ссылку на родительский контроллер в экземпляре модального контроллера.Вы можете сделать это более общим с протоколами.Объявите следующее protocol
:
protocol AccountButtonProvider: AnyObject {
var accountButtonTitle: String? { set get }
}
AnyObject
требуется для объявления ссылки на AccountButtonProvider
как weak
.Полагаю, вам это понадобится, чтобы избежать утечек памяти.
Сделать HomeViewController
соответствующим AccountButtonProvider
:
extension HomeViewController: AccountButtonProvider {
var accountButtonTitle: String? {
set {
accountButton.title = newValue
}
get {
return accountButton.title
}
}
}
Затем добавьте следующее свойство в EditUserAccountViewController
:
weak var accountButtonProvider: AccountButtonProvider?
Инициализируйте это свойство перед тем, как представить EditUserAccountViewController
.Для этого добавьте editUserAccountVC.accountButtonProvider = self
к accountButton(_:)
:
@IBAction func accountButton(_ pSender: UIBarButtonItem) {
let editUserAccountVC = UIStoryboard.fs_instantiateFromStoryboard("Main", identifier: "EditUserAccountViewController") as! EditUserAccountViewController
editUserAccountVC.accountButtonProvider = self
}
Вы также должны изменить saveButton(_:)
:
@IBAction func saveButton(_ sender: Any) {
self.dismiss(animated: true) {
self.accountButtonProvider?.actionButtonTitle = self.firstName
}
}
Весь код в этом посте был протестирован в Xcode 10.2.1,Я использовал Swift 5.