classaからclassbにnsnotificationを送信します
-
25-10-2019 - |
質問
そのため、アプリを購入するアプリがあります。 In Appの購入は、FirstViewControllerで管理されています。ユーザーが製品を購入したら、MaintableViewControllerに通知を送信して、テーブルデータをリロードし、アプリ購入で購入した新しいオブジェクトを表示します。基本的に、クラスAからクラスBに通知を送信し、クラスBはテーブルビューのデータをリロードします。私はnsnotificationcenterを使用してみましたが、成功しませんでしたが、nsnotificationcenterで可能性があることはわかりません。
解決
クラスAで:通知を投稿します
[[NSNotificationCenter defaultCenter] postNotificationName:@"DataUpdated"
object:self];
クラスBで:最初に通知について登録し、それを処理する方法を書きます。
対応するセレクターをメソッドに与えます。
// view did load
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleUpdatedData:)
name:@"DataUpdated"
object:nil];
-(void)handleUpdatedData:(NSNotification *)notification {
NSLog(@"recieved");
[self.tableView reloadData];
}
他のヒント
わかりました、私はビンスの答えにもう少し情報を追加します
クラスAで:通知を投稿します
[[NSNotificationCenter defaultCenter] postNotificationName:@"DataUpdated"
object:arrayOfPurchasedObjects];
クラスBで:最初に通知について登録し、それを処理する方法を書きます。
対応するセレクターをメソッドに与えます。通知を投稿する前に、クラスBが割り当てられていることを確認してください。
- (void) viewDidLoad {
// view did load
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleUpdatedData:)
name:@"DataUpdated"
object:nil];
}
-(void)handleUpdatedData:(NSNotification *)notification {
NSLog(@"recieved");
NSArray *purchased = [notification object];
[classBTableDataSourceArray addObjectsFromArray:purchased];
[self.tableView reloadData];
}
- (void) dealloc {
// view did load
[[NSNotificationCenter defaultCenter] removeObserver:self
name:@"DataUpdated"
object:nil];
[super dealloc];
}
たぶん、別のスレッドから通知を送信しようとしていますか? nsnotificationは、別のスレッドからオブザーバーに配信されません。
所属していません StackOverflow