将这行代码放在你的ParentViewController
的viewDidLoad
方法中调用,而不是在ChildViewController
中。
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
请从您的
ChildViewController
中删除以下代码行。
self.navigationItem.hidesBackButton = true
一切都会没问题!如果您需要为此转换创建一个操作,也就是当用户从您的ChildViewController
点击后退按钮时。只需在您的ChildViewController
内调用此方法即可。
override func didMove(toParentViewController parent: UIViewController?) {
super.didMove(toParentViewController: parent)
if parent == nil {
} else {
}
}
编辑:
ChildViewController
override func didMove(toParentViewController parent: UIViewController?) {
super.didMove(toParentViewController: parent)
if parent == nil {
NotificationCenter.default.post(name: NSNotification.Name.init("Post"), object: nil)
} else {
}
}
父视图控制器
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.default.addObserver(self, selector: #selector(self.handler(notification:)), name: NSNotification.Name.init(rawValue: "Post"), object: nil)
}
func handler(notification: Notification) {
let alertController = UIAlertController(title: "Hello", message: nil, preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "Dismiss", style: .default, handler: nil))
self.present(alertController, animated: true, completion: nil)
}
这个可以工作但有一个问题:
警告:尝试在演示期间呈现 on !
因此我不建议使用。祝好运。
UINavigationControllerDelegate
方法来实现我的建议解决方案了吗? - regetskcob