我有一個視圖控制器,許多視圖和一個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