我想將NSString從一個類傳遞給另一個類。比方說,我有一個的ViewController和ViewController B.我想從一個傳遞的NSString B.NSNotification不是調用@selector方法
在視圖控制器A,我有以下代碼:
[[NSNotificationCenter defaultCenter] postNotificationName:@"NotificationMessageEvent" object:userType];
//這裏用戶類型爲字符串,我得到使用委託和我需要這個用戶類型傳遞到的ViewController乙
在視圖控制器B,I已經以下代碼: 在viewDidLoad中,我已經以下代碼:
[NSNotificationCenter defaultCenter]
addObserver:self selector:@selector(notificationAction:) name:@"NotificationMessageEvent" object:nil];
//此NSNotificationCenter方法被稱爲
我註冊了以下選擇器方法。
-(void) notificationAction:(NSNotification *) notification
{
if ([notification.object isKindOfClass:[NSString class]])
{
NSString *message = [notification object];
// do stuff here with your message data
NSLog(@"%@ is message",message);
}
else
{
NSLog(@"Error, object not recognised.");
}
}
//上述選擇器方法永遠不會被調用。
我已閱讀其他類似的計算器的答案,但我一直沒能找到任何解決方案。
爲了上述通知的選擇實際上被添加,視圖控制器B的viewDidLoad中必須已經調用(又名視圖必須顯示) –
感謝您澄清@Hayden Holligan。實際上我在B之前加載A. – Rosh
雖然您的代碼有效,但請不要以這種方式使用通知對象。這種情況下的對象是通知實例的發件人。使用userInfo在對象之間傳遞一些信息。 –