如何从不同的视图向按钮发送消息?

时间:2011-06-17 00:12:33

标签: objective-c

我有一个应用程序,其主视图充当视图控制器。这个主视图上有3个按钮。我有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