Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.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
Ios 添加UIView作为NSNotificationCenter消息的观察者_Ios_Nsnotificationcenter - Fatal编程技术网

Ios 添加UIView作为NSNotificationCenter消息的观察者

Ios 添加UIView作为NSNotificationCenter消息的观察者,ios,nsnotificationcenter,Ios,Nsnotificationcenter,如何添加UIView作为NSNotificationCenter消息的观察者 我需要在一个ViewCustomView1.m和另一个ViewCustomView2.m之间进行通信。最好不要触摸VIewCOntroller中的代码 以下是我目前的尝试方式: 从MyView1.m发布通知 [[NSNotificationCenter defaultCenter] postNotificationName:@"InviteEmailClosedNotification" objec

如何添加UIView作为NSNotificationCenter消息的观察者

我需要在一个ViewCustomView1.m和另一个ViewCustomView2.m之间进行通信。最好不要触摸VIewCOntroller中的代码

以下是我目前的尝试方式:

从MyView1.m发布通知

[[NSNotificationCenter defaultCenter]
     postNotificationName:@"InviteEmailClosedNotification"
     object:self];
在MyView2.m中接收通知

   [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(inviteEmailClosed)
                                                 name:@"InviteEmailClosedNotification"
                                               object:nil];
收到时做某事:

- (void) inviteEmailClosed{
   NSLOG(@"DO SOMETHING HERE");
}

我在xib中定义了UIView,并将其添加到viewcontroller中

在为addObserver指定的类中:self,而不是self,指定应该观察消息的类,或者如果在类中添加了观察者,则self可以正确使用


编辑:您确定在nib中将UIView设置为正确的子类MyView2吗?

您的代码看起来不错-这是正确的方法。我猜你的问题是什么

这些代码行是否正在运行?在它们上设置断点并查看。 如果您在xib中定义了UIView,您是否记得将其类设置为您想要的类,而不是将其保留为UIView? self真的是您想要添加为观察者的对象吗。 您是否在MeChanged上设置了断点,并查看是否正在调用它? @InviteEmailClosedNotification肯定是您通知的名称吗? 希望这些随机建议能有所帮助

PS使用字符串作为通知名称不是一个好主意-您可能应该在某个地方定义它并使用该常量。i、 e

#define InviteEmailClosedNotification @"InviteEmailClosedNotification"

这将在从MyView1.m发布通知时停止输入错误:

将对象设置为零

[[NSNotificationCenter defaultCenter]
     postNotificationName:@"InviteEmailClosedNotification"
     object:nil];

从一个视图控制器而不是一个视图中监听解决了我的问题,尽管不是100%理想

不清楚你在问什么?你有什么问题?我需要在视图控制器上从一个视图向另一个视图发送通知。。。最好不要在viewcontroller中编写代码,并编写代码以使两个视图相互通信。请展开您的问题,说明什么不起作用,以及您正在做什么来发布通知。目前,这里没有什么可以回答的。我将为静态字符串创建一个通知中心类,感谢您的建议:。我想从一个类到另一个类观察UIView的两个子类;不是UIViewController。这是否有助于澄清:?您的代码看起来很好-一定有其他事情发生。你确定你真的在发送通知吗?尝试放置一个NSLog或断点来查看。确定,因此这没有帮助。我登录以查看正在访问的内容。广播正在发送。。。然而UIView没有接收到它们。您确实在运行添加观察者的代码行吗?也可以尝试使用NSLog来检查出现这种情况的原因是什么:?这不会有什么区别-因为通知侦听器对其对象参数传递了nil,它将已经从中侦听InviteEmailClosedNotifications任何对象。将对象设置为nil将在应用程序中的任何位置广播您的通知。确定,因此这没有帮助。我登录以查看正在访问的内容。广播正在发送。。。但是,UIView没有接收到它们。