UINavigationItem
是 iOS 开发中用于在导航栏上显示标题、按钮等元素的类。而 UIAlertController
则是用于展示警告、确认或其他简单对话框的类。虽然它们在功能上没有直接的关联,但你可以通过扩展 UINavigationItem
来方便地呈现 UIAlertController
。
UINavigationBar
的子类,用于在导航栏上显示内容。你可以通过扩展 UINavigationItem
来添加一个方法,使得从当前的视图控制器中呈现 UIAlertController
变得更加方便。
extension UINavigationItem {
func showAlert(title: String?, message: String?, viewController: UIViewController) {
let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
alertController.addAction(okAction)
viewController.present(alertController, animated: true, completion: nil)
}
}
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 假设你的导航栏项是 self.navigationItem
self.navigationItem.showAlert(title: "提示", message: "这是一个警告对话框", viewController: self)
}
}
UINavigationItem
,你可以直接从导航栏项调用 showAlert
方法来呈现对话框,而不需要在每个视图控制器中重复相同的代码。问题: 在某些情况下,调用 showAlert
方法时,对话框可能不会正确呈现。
原因: 这通常是因为在视图控制器的生命周期中的不合适时机调用了该方法,例如在视图控制器还未完全加载完成时。
解决方法: 确保在视图控制器的 viewDidLoad
或其他合适的生命周期方法中调用 showAlert
方法。避免在视图控制器的初始化方法或其他过早的时机调用。
领取专属 10元无门槛券
手把手带您无忧上云