Ios 在另一个视图控制器中禁用1个视图控制器的按钮
我在尝试禁用另一个视图控制器中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
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控制器按钮的用户交互之类的操作。您需要发布您正在执行的操作的代码!否则我们就看不到你犯了什么错误!