質問

そのため、アプリを購入するアプリがあります。 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は、別のスレッドからオブザーバーに配信されません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top