我有一个应用程序,其主视图充当视图控制器。这个主视图上有3个按钮。我有3个子视图,我交换进出这个主视图,由3个按钮控制。每个子视图上都有一个按钮。按下此按钮时,我希望它禁用主视图上的3个按钮,直到再次按下该按钮。有没有办法在视图之间发送消息以禁用按钮?
答案 0 :(得分:1)
这听起来像是对我的切换。更像是一个设置。如果你考虑一下,这应该在NSUserDefaults
。当您查看特定视图时,可能会在viewWillAppear:
或viewDidAppear:
中执行此操作,
BOOL controlsEnabled = [[NSUserDefaults standardUserDefaults] boolForKey:@"ControlsEnabledKey"];
button1.enabled = controlsEnabled;
button2.enabled = controlsEnabled;
button3.enabled = controlsEnabled;
要在该按钮上保存值,请按
BOOL controlsEnabled = [[NSUserDefaults standardUserDefaults] boolForKey:@"ControlsEnabledKey"];
[[NSUserDefaults standardUserDefaults] setBool:!controlsEnabled forKey:@"ControlsEnabledKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
注意由于如果找不到密钥,boolForKey:
将返回NO
,我建议您在应用程序启动时将值设置为YES
希望在启动时启用控件。
答案 1 :(得分:0)
使用NSNotifications发布按下按钮的通知。
[[NSNotificationCenter defaultCenter] postNotificationName:@"Button1Pressed" object:self userInfo:info];
然后添加观察者,以便他们听取这些通知。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(buttonPress:) name:@"Button1Pressed" object:nil];
现在实施buttonPress
阅读HERE 以获取NSNotification手册并学习如何使用它。
答案 2 :(得分:0)
将主视图/控制器设置为内部视图的委托,定义一个协议,在该协议中定义一个方法,比如toggleMainButtons
,让VC符合该协议并实现消息。在按钮上,addTarget:self.delegate action:@selector(toggleMainButtons) forControlEvents:UIControlEventTouchUpInside
。