0

セルごとにボタンがあり、クリックすると個々のオブジェクトが Parse バックエンドから削除されます。reloadDataここに見られるように、ブロックでの成功時に設定しました:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    PFRelation *relation = [self.currentUser relationforKey:@"watching"];
    [[relation query] findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
            if (error) {
            // There was an error
            } else {
               // NSLog(@"%@", objects);
                self.watchingEvents = objects;
                [self refreshTableView];
            }
    }];
}

-(IBAction) deleteButtonAction:(id) sender
{
    [SVProgressHUD showWithStatus:@"Removing from Watch List..."];

    PFRelation *relation = [self.currentUser relationforKey:@"watching"];
    [relation removeObject:self.selectedEvent];
    [self.currentUser saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (error)
        {
            NSString *errorString = [[error userInfo] objectForKey:@"error"];
            UIAlertView *errorAlertView = [[UIAlertView alloc] initWithTitle:@"Error" message:errorString delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [errorAlertView show];
        }
        else
        {
            [SVProgressHUD showSuccessWithStatus:@"Removed from Watch List!"];
            [self refreshTableView];
        }
    }];
}
-(void)refreshTableView
{
    [self.tableView reloadData];
}

しかし、それはtableViewを更新していないようですが、セルはまだ表示されています(離れて移動してビューを再度開くviewWillAppearと、同じreloadData関数で呼び出され、アイテムが本来あるべきようになったため、セルは表示されません。だから私は私viewWillAppearが入力したNSLogメッセージと同様にアラートが正常に実行されるため、ブロックの成功が実行されると機能しない理由がわかりませんか?

4

3 に答える 3

1

更新方法を次のように変更します。

-(void)refreshTableView
{
    dispatch_async(dispatch_get_main_queue(), ^{
        [self.tableView reloadData];
    });
}
于 2013-11-12T19:08:21.487 に答える