2009-11-17 50 views
0

我只是不明白,我用通知trillon时间,但今天我似乎无法得到通知发送从一个特定的对象。 这是一个视图控制器...在什么情况下会通知不发帖?

- (void)buttonPressed:(UIButton*)sender { 
NSLog(@"buttonPressed"); 
[[NSNotificationCenter defaultCenter] postNotificationName:@"test" object:self]; 
} 

,这是在另一个视图控制器(在init)..

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test:) name:@"test" object:nil]; 

和方法..

-(void)test:(NSNotification *)notification{ 
NSLog(@"it works! "); 
} 

...只是标准的东西,现在如果我发布通知从任何其他对象的工作正常,只是不会从这一个视图控制器发布!它甚至记录“buttonPressed”,所以它不像按钮被破坏。我只是不明白。

任何想法?

+0

我放弃!我浪费了两天的时间。确实非常非常奇怪。我重写了它,并使用了代表团。除此之外,其他所有通知都可以正常工作。奇怪的。! – user139816 2009-11-18 10:30:18

回答

0

这是您通过在Interface Builder中拖放创建的视图控制器吗?如果是这样,那么将不会调用-init方法(即-initWithCoder)。但是,如果您需要从界面设置东西,请覆盖-awakeFromNib方法并将您的设置代码放在那里。

+0

对不起,这是我愚蠢地缩写我的解释。 'addObserver'后有一个日志,那段代码运行良好。 这就是所有的日志火灾的事情,并在正确的顺序,但没有通过通知沟通。我很困惑。我将重写整个事情,看看是否有任何东西跳出来...... – user139816 2009-11-17 16:05:20

0

您是否尝试过在发送时为对象传递nil而不是self:参数?我以为没有意味着你会得到这个名字的每一个通知,但可能并非如此。

此外,尝试订阅通知之前,你发送它,看看是否被调用。

+0

添加观察者时,他确实使用nil,所以通知不会被过滤为仅包含具有特定对象的通知。用对象发布通知不应改变接收方式。 – 2009-11-17 17:59:08

+0

这就是我的想法,但尝试并不会让人感到痛苦,并且可能会让他想到他可能做错的其他事情。 – 2009-11-18 16:25:53

相关问题