NSNotificationを使用しようとしています。ビューの中でどのボタンが押されたかに基づいてNSDictionaryを作成します。私はNSLogタグ、タグは正しいです。だから私は私の辞書を作成するために、このようなswitchステートメントを使用します。ShowDataで、その後NSNoticationを使用してuserInfo(NSDictionary)を別のオブジェクトに渡す
NSDictionary *dict;
switch (tag) {
case 0:
dict = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:tag] forKey:@"ButtonType"];
break;
case 1:
dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:tag], @"ButtonType", nil];
break;
case 2:
dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:tag], @"ButtonType", nil];
break;
case 3:
dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:tag], @"ButtonType", nil];
break;
case 4:
dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:tag], @"ButtonType", nil];
break;
default:
NSLog(@"No dictionary set for ButtonType");
break;
}
[[NSNotificationCenter defaultCenter] postNotificationName:(ShowData:) object:self userInfo:dict];
そして:
- (void)ShowData:(NSNotification *)notification {
NSLog(@"%s", __FUNCTION__);
NSDictionary *userDict = [notification userInfo];
NSInteger theTag = (NSInteger)[userDict objectForKey:@"ButtonType"];
NSLog(@"tag: %i", theTag); // this value is incorrect
私ShowData方法では、私は同じタグ値を期待します、0- 4ではなく、代わりに187742848のようなものがあります。デバッガをステップ実行すると、渡される値にNSDictionaryのuserInfoが設定されています。 ShowDataに渡す正しいNSDictionaryを作成していないのですか?ありがとう。