按下后退按钮后,从另一个视图控制器更改按钮

Posted

技术标签:

【中文标题】按下后退按钮后,从另一个视图控制器更改按钮【英文标题】:Change button from another view controller once the back button has been pressed 【发布时间】:2018-04-30 05:25:15 【问题描述】:

一旦按下导航栏的后退按钮,我试图隐藏/禁用另一个视图控制器的按钮,但我无法弄清楚。基本上,我有一个视图控制器,用户可以在其中添加最多 7 天的锻炼(天数显示为按钮)。每当他们按下一天时,他们就会被带到另一个视图,在那里他们可以选择他们希望在这一天做的练习。一旦他们保存并按下导航栏上的后退按钮,我想在他们刚刚添加锻炼的那一天禁用该按钮,这样他们就不能再按下它了。我将衷心感谢您的帮助!提前致谢!

【问题讨论】:

【参考方案1】:

您可以在VC中简单地编写以下代码,并在后面添加条件

override func viewWillAppear(_ animated: Bool) 
let appDelegate = UIApplication.shared.delegate as! AppDelegate
 if appDelegate.isFromPreviousScreen == true
    button.isHidden = true
   

注意:- fromPrevious 从 nextVC 返回时设为 true

如果您的问题是离开 secondVC 时如何使fromPrevious 为真:

然后你需要从那里传递一个值,或者作为初学者,我建议你在AppDelegate中使用一个全局变量

 class AppDelegate: UIResponder, UIApplicationDelegate 

    var window: UIWindow?

    var isFromPreviousScreen:Bool = false

并在SecondVC中添加如下代码:

override func viewWillDisappear(_ animated: Bool) 
       let appDelegate = UIApplication.shared.delegate as! AppDelegate
        appDelegate.isFromPreviousScreen = true

希望这会有所帮助。

【讨论】:

以上是关于按下后退按钮后,从另一个视图控制器更改按钮的主要内容,如果未能解决你的问题,请参考以下文章

按下后退按钮后,navigationController 为 NULL

如何检测在导航控制器的下一个视图控制器中按下后退按钮

在 iOS 13 上推送新视图后后退按钮崩溃

如何知道从另一个视图控制器中的 UICollectionViewController 按下了哪个按钮

我可以用 xcode 中的“导航控制器后退按钮”传递数据吗

如何更改缩短的后退按钮标题?