通过警报控制器更改标题

问题描述 投票:1回答:1

我希望能够更改navigationBar中显示的标题。我有alertController设置,它看起来不错,但是在输入newTitle文本后,当前标题消失了,但没有出现新标题。我尝试在viewDidLoadviewWillAppear以及按钮按下事件本身中重新加载数据(如代码所示)。任何输入表示赞赏。

    @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)

    }
xcode uinavigationbar uialertcontroller
1个回答
0
投票

[设置警报动作时,无需在警报控制器上调用关闭。单击一个动作时,警报控制器将自动关闭。

请尝试此代码:

@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)

}
© www.soinside.com 2019 - 2024. All rights reserved.