首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSNotification误差

NSNotification误差
EN

Stack Overflow用户
提问于 2014-02-07 05:21:51
回答 2查看 312关注 0票数 3

因为某种原因,我似乎被困在NSNotification上了。

我在IBAction按钮方法中发布通知。当用户点击该按钮时,我希望得到通知,这样我就可以在文本字段中设置文本。如果没有他们按下按钮,NSString仍然是零--这就是为什么我需要知道他们什么时候这么做。

因此,在按钮方法中,我有以下内容:

代码语言:javascript
复制
- (IBAction)suggestionsButton:(UIButton *)sender {

    self.usernameSelected = sender.titleLabel.text;
    [[NSNotificationCenter defaultCenter] postNotificationName:@"UserTappedButton" object:self];
}

这是在一个UITableviewCell类中。

然后,在与此操作有关的视图控制器中添加观察者:

代码语言:javascript
复制
 (void)viewDidLoad
{
    [super viewDidLoad];

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

我检查过的东西:

  1. 在post方法之前首先调用观察者方法(它是)
  2. 两个方法的名称都是正确的。
  3. 选择器签名是正确的

看了几个这样的答案,也没有帮上忙。

伙计们,这里有我遗漏的东西吗?

*更新*

对不起-这是我想要调用的方法:

代码语言:javascript
复制
-(void)userPickedAuserNameFromSuggestion: (NSNotification *)notification
{
    NSLog (@"Selected Username: %@", self.usernameCell.usernameSelected);

}

但是它没有被调用

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-07 06:25:15

-addObserver:放在viewDidAppear中,-removeObserver:放在viewDidDisappear

代码语言:javascript
复制
- (void)viewDidAppear:(BOOL)animated
{
    //...
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(userPickedAuserNameFromSuggestion:)
                                                 name:@"UserTappedButton"
                                               object:nil];
    //...
}

- (void)viewDidDisappear:(BOOL)animated
{
    //...
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:@"UserTappedButton"
                                                  object:nil];
    //...
}
票数 2
EN

Stack Overflow用户

发布于 2016-08-10 03:30:59

我认为您的通知观察者没有正确地发布,您需要这样做:

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UserTappedButton" object:nil];

dealloc函数中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21619962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档