Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何从不同的视图向按钮发送消息?_Objective C - Fatal编程技术网

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

Objective c 如何从不同的视图向按钮发送消息?,objective-c,Objective C,我有一个应用程序,它有一个作为视图控制器的主视图。此主视图上有3个按钮。我有3个子视图,可以在主视图中交换,由3个按钮控制。每个子视图上都有一个按钮。当按下此按钮时,我希望它禁用主视图上的3个按钮,直到再次按下此按钮。是否有方法在视图之间发送消息以禁用按钮 使用NSNotifications发布按钮已按下的通知 [[NSNotificationCenter defaultCenter] postNotificationName:@"Button1Pressed" object:self use

我有一个应用程序,它有一个作为视图控制器的主视图。此主视图上有3个按钮。我有3个子视图,可以在主视图中交换,由3个按钮控制。每个子视图上都有一个按钮。当按下此按钮时,我希望它禁用主视图上的3个按钮,直到再次按下此按钮。是否有方法在视图之间发送消息以禁用按钮

使用NSNotifications发布按钮已按下的通知

 [[NSNotificationCenter defaultCenter] postNotificationName:@"Button1Pressed" object:self userInfo:info];
然后添加观察者,以便他们收听这些通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(buttonPress:) name:@"Button1Pressed" object:nil];
现在执行
按钮按


阅读NSNotification手册并学习如何使用

对我来说,这听起来像是一种切换。更像是一个场景。如果您仔细考虑,应该将其放入
NSUserDefaults
。当您打开特定视图时,可能会在
视图中出现:
视图显示:
,请执行此操作

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];

注意由于
布尔工作:
将返回
如果找不到键,我建议您在应用程序启动时将值设置为
,如果您希望在启动时启用控件。

将主视图/控制器设置为内部视图的代理,定义一个协议,在该协议中定义一个方法,例如,
toggleMainButtons
,让VC遵守该协议并实现消息。在按钮上,
addTarget:self.delegate action:@selector(toggleMainButtons)for ControlEvents:UIControlEventTouchUpInside

好的,我正在尝试理解这一点。请容忍我,我对目标C是相当陌生的。在我的主视图中,在viewDidLoad中,我放置了观察者(如上所示)并移除了观察者。在3个子视图中的一个子视图中,我将postNotification放在buttonPress方法中。我没有收到任何警告或错误,但当我按下按钮时,什么也没有发生。有什么想法吗?好的,我知道我的错误了。我把观察者放错位置了。我把它移到(void)dealloc,效果很好。非常感谢你的帮助。