我在我的應用程序中有一個UITableview控制器,一個視圖控制器,我試圖從UITableview控制器通過NSDictionary到我的ViewController,使用NSNotificationCenter。所以,我在我的UITableView控制器推送通知,然後我添加一個觀察者,用我的ViewController.The選擇的選擇器稱爲,但我有一個的NSLog並獲得記憶的結果,如:NSNotificationCenter,打印內存地址
的ViewController:0x8a0bcc0
我試圖通過NSString而不是NSDictionary,但我得到了內存結果,而不是字符串的值。
我的代碼:
的UITableView控制器
NSString *[email protected]"This is a test string";
[[NSNotificationCenter defaultCenter] postNotificationName: @"Update" object: string];
的ViewController
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(incomingNotification:) name:@"Update" object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:@"Update" object:self];
這裏是incomingNotification選擇方法:
-(void) incomingNotification : (NSNotification *)notification{
NSLog(@"Trying to print : %@",[notification object]);
}
所有通知發生在ViewDidLoad method.Thank you!
UPDATE
最後,我放棄了使用NSNotificationCenter和使用性能來傳遞數據,從我TableViewController改變了一下inheretence。不知道爲什麼通知沒有工作,因爲他們應該這樣做。謝謝大家,非常感謝您的建議和想法:)
爲什麼在添加觀察者後立即在'ViewController'中發佈第二個通知?這就是爲什麼你在控制檯中得到這個字符串。那麼爲什麼沒有測試字符串 - 確保在添加觀察者之前在表格控制器中發佈通知(設置斷點以觀察它們的順序) – medvedNick
您可以在ViewController中使用object self調用postNotification,以便打印出您自己的目的。 –
如果我刪除ViewController中的第二個通知,那麼選擇器方法不會被調用!我將嘗試設置斷點! –