每个单元格都有一个按钮,一旦单击它就会从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消息是什么?
答案 0 :(得分:1)
将刷新方法更改为:
-(void)refreshTableView
{
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
}
答案 1 :(得分:0)
在删除,插入或移动操作之前需要先使用[tableView beginUpdates],然后在最后执行[tableView endUpdates]。
- (void)beginUpdates;
- (void)endUpdates;
答案 2 :(得分:0)
您正在从后端删除数据,但您没有从self.watchingEvents中删除该对象。我认为你必须使用self.watchingEvents来填充表格的cellForRowAtindex中的日期。请在删除时从self.watchingEvents中删除该对象,并解决您的问题。