【发布时间】:2014-02-07 05:21:51
【问题描述】:
由于某种原因,我似乎卡在了 NSNotification 上。
我正在通过 IBAction 按钮方法发布通知。当用户点击该按钮时,我希望收到有关它的通知,以便我可以在文本字段中设置文本。如果没有他们点击按钮, NSString 仍然为零 - 这就是为什么我需要知道他们什么时候这样做。
所以在按钮方法中我有这个:
- (IBAction)suggestionsButton:(UIButton *)sender {
self.usernameSelected = sender.titleLabel.text;
[[NSNotificationCenter defaultCenter] postNotificationName:@"UserTappedButton" object:self];
}
这是在 UITableviewCell 类中。
然后我将观察者添加到与此操作有关的视图控制器中:
(void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(userPickedAuserNameFromSuggestion:) name:@"UserTappedButton" object:nil];
}
我检查过的东西:
- 在post方法之前先调用observer方法(是)
- 这两种方法的名称都是正确的
- 选择器签名正确
也看了一些 SO 答案,但没有帮助。
这里有什么我想念的吗?
*更新 *
对不起 - 这是我想要调用的方法:
-(void)userPickedAuserNameFromSuggestion: (NSNotification *)notification
{
NSLog (@"Selected Username: %@", self.usernameCell.usernameSelected);
}
但是它没有被调用
【问题讨论】:
-
你不说是什么问题。
-
你能展示你的方法吗 - userPickedAuserNameFromSuggestion
-
你确定当用户点击按钮时
suggestionsButton:方法被调用了吗? -
用我想要调用的方法更新了 OP。 SuggestionsButton 肯定是被调用的。我设置了一个断点并在其上设置了 NSLog 调用 NSLog 并在断点处停止执行。
-
addObserver:inviewWillAppear和removeObserver:inviewWillDisappear
标签: ios objective-c nsnotificationcenter