Ios 在另一个视图控制器中禁用1个视图控制器的按钮

Ios 在另一个视图控制器中禁用1个视图控制器的按钮,ios,swift,closures,Ios,Swift,Closures,我在尝试禁用另一个视图控制器中1个视图控制器的按钮用户交互时遇到问题 我在这里搜索过类似的问题,但有些问题似乎过时了,或者不适合我: 我的设想如下: class ViewControllerA() { @IBOutlet weak var btnFirst: UIButton! @IBOutlet weak var btnSecond: UIButton! @IBOutlet weak var btnThird: UIButton! override func viewDi

我在尝试禁用另一个视图控制器中1个视图控制器的按钮用户交互时遇到问题

我在这里搜索过类似的问题,但有些问题似乎过时了,或者不适合我:

我的设想如下:

class ViewControllerA() {

  @IBOutlet weak var btnFirst: UIButton!
  @IBOutlet weak var btnSecond: UIButton!
  @IBOutlet weak var btnThird: UIButton!

  override func viewDidLoad() {
    var vcB = ViewControllerB()
    vcB.closure = {
    // Meet some condition, want to disable buttons of ViewControllerA here
    }
  }

}

class ViewControllerB() {
   var closure: () -> Void = {}
   // Do something with closure here
}
我的问题是,我在闭包中设置了断点,并尝试在闭包中直接使用IBOulet来禁用如下按钮:

btnFirst.isUserInteractionEnabled = false
或者尝试在ViewControllerB的闭包中设置ViewControllerA的属性并使用property observer,每当此属性更改时,启用或禁用ViewControllerA的按钮

我的问题是,我仍然可以单击按钮,就好像它是启用的一样。对不起,我无法发布代码,请帮助我


谢谢

因为您没有发布任何相关代码,我只能猜测可能发生了什么:

我假设您没有访问正确的viewcontroller的
btnFirst
。在
ViewControllerA.viewDidLoad
中,您正在创建
ViewControllerB
的新实例,并设置闭包。您是否也正显示此视图控制器的视图?或者用户将如何导航到B?如果您使用的是故事板序列,这些将创建一个新的B实例并显示其视图。现在,当您在A中执行闭包时,这将禁用第一个B的按钮,而不是显示的B的按钮


但这仍然只是一个猜测…

您可以从第二个视图控制器发布通知,并在第一个视图控制器中为该特定发布的通知添加观察者


在该观察者方法中,您可以执行诸如禁用first view控制器按钮的用户交互之类的操作。

您需要发布您正在执行的操作的代码!否则我们就看不到你犯了什么错误!