我希望能够更改navigationBar
中显示的标题。我有alertController
设置,它看起来不错,但是在输入newTitle文本后,当前标题消失了,但没有出现新标题。我尝试在viewDidLoad
,viewWillAppear
以及按钮按下事件本身中重新加载数据(如代码所示)。任何输入表示赞赏。
@IBAction func changeTitleBarButtonPressed(_ sender: UIBarButtonItem) {
let titleChange = UIAlertController(
title: "Change Title",
message: "Please input text to change the title",
preferredStyle: .alert)
titleChange.addTextField { (textField) in
textField.placeholder = "Input new title"
}
titleChange.addAction(UIAlertAction(
title: "Cancel",
style: .cancel,
handler: { (cancelAction) in
titleChange.dismiss(animated: true)
}))
titleChange.addAction(UIAlertAction(
title: "Change Title",
style: .default,
handler: { (changeAction) in
let newTitle = self.textField?.text
titleChange.dismiss(animated: true)
self.navigationItem.title = newTitle
self.imagesTableView.reloadData()
}))
self.present(titleChange, animated: true)
}
[设置警报动作时,无需在警报控制器上调用关闭。单击一个动作时,警报控制器将自动关闭。
请尝试此代码:
@IBAction func changeTitleBarButtonPressed(_ sender: UIBarButtonItem) {
let titleChange = UIAlertController(
title: "Change Title",
message: "Please input text to change the title",
preferredStyle: .alert)
titleChange.addTextField { (textField) in
textField.placeholder = "Input new title"
}
titleChange.addAction(UIAlertAction(
title: "Cancel",
style: .cancel
)
titleChange.addAction(UIAlertAction(
title: "Change Title",
style: .default,
handler: { (changeAction) in
let newTitle = self.textField?.text
self.navigationItem.title = newTitle
self.imagesTableView.reloadData()
}))
self.present(titleChange, animated: true)
}