我有一个视图控制器,许多视图和一个tableview。不能自动更新tableview
tableview的单元格是自定义的,所以还有另外一个类来设置单元格。 在每个单元格中都有一个按钮。此按钮的图像根据单元格的内容而变化(从数据库读取此内容)。
基本上,当用户按下按钮时,它将自己改变为另一个图像,新的状态被写入数据库,但tableview不会自动更新自身。
该按钮的方法是在自定义细胞类,所以我试图实例我的视图控制器(所述一个与所述的tableview),并执行用于更新在视图中的一些标签和tableview中的方法:
ViewControllerWithTable *vc = [[ViewControllerWithTable alloc] init];
[vc updateEverything];
但这不起作用。 从相同的“ViewControllerWithTable”调用(添加重载按钮)的相同“updateEverything”方法完美地工作。 在viewWillAppear方法中添加“[tableView reloadData]”将不起作用,因为所有操作都在同一视图中完成。
我错过了什么?
编辑:添加一些代码更清晰。
这是我用来更新tableview的方法。这是与嵌入式的tableview的视图控制器内,当通过一个按钮在一个视图中触发它的工作原理:
- (void) updateEverything {
// lots of DB writing and reading, plus label text changing inside all the views
[tableView reloadData];
}
这是IBAction为按按键,它的自定义单元格类:
-(void) btnPresaPressed:(UIButton *)sender {
AppDelegate *deleg = (AppDelegate *)[[UIApplication sharedApplication] delegate];
deleg.did = sender.tag;
NSString *s1 = NSLocalizedString(@"ALERT_TITLE", nil);
NSString *s2 = NSLocalizedString(@"ALERT_BODY", nil);
NSString *s3 = NSLocalizedString(@"YES", nil);
NSString *s4 = NSLocalizedString(@"NO", nil);
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:s1
message:s2
delegate:self
cancelButtonTitle:s4
otherButtonTitles:s3, nil];
[alertView setTag:1];
[alertView show];
}
这种方法表明,调用另一个方法,总是在自定义单元格级警报视图:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
AppDelegate *deleg = (AppDelegate *)[[UIApplication sharedApplication] delegate];
DbOperations *db = [[DbOperations alloc] init];
NSString *alrtTitle = [alertView buttonTitleAtIndex:buttonIndex];
NSString *s3 = NSLocalizedString(@"YES", nil);
NSString *s4 = NSLocalizedString(@"NO", nil);
switch (alertView.tag) {
case 1:
//
break;
case 2:
if ([alrtTitle isEqualToString:s3]) {
// DB writing and reading
ViewControllerWithTable *vc = [[ViewControllerWithTable alloc] init];
[vc updateEverything];
} else if ([alrtTitle isEqualToString:s4]){
//
}
break;
case 3:
if ([alrtTitle isEqualToString:s3]) {
//
}
break;
default:
break;
}
}
在这种情况下,updateEverything方法不起作用。
那么'updateEverything'是怎么样的呢?有一些方法可以在单独的indexPath上重新加载单元格。你应该看看它们。 – Eimantas