[self.tableView reloadData];
這行程式碼就是讓整個表格檢視進行重新整理,那用在什麼地方呢?
看什麼操作需要表格檢視進行資料重新整理就可以了。
情況一
如果在點選返回按鈕的時候,這個時候從一個檢視跳轉回到表格檢視,如果我們進行了新增操作需要重新整理資料,就可以新增如下程式碼
- (void)viewWillAppear:(BOOL)animated {
// 這個地方,我們重新獲取一次新資料,然後重新整理表格一次
self.notes = [[NoteBL alloc] findAll];
[self.tableView reloadData];
}
每個 controller 裡面一般都會實現 viewDidLoad 和 viewWillAppear: 兩個方法。對於iOS開發人員來說,這兩個方法都很熟悉。至少都知道前者是在初始化時被呼叫一次,後者是在每次這個檢視要被顯示之前被呼叫一次。因此 controller 中主要的初始化程式碼都放在前者中,而後者主要用於檢視在顯示前的更新。
viewDidLoad 和 viewWillAppear: 方法
情況二
如果我們的檢視始終是當前檢視,沒有發生變化,但是表格資料進行了刪除,類似下面的情況,我們也需要重新整理表格檢視,當然資料也要跟隨重新整理。
[self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationLeft];
self.notes = [[NoteBL alloc] findAll];
[self.tableView reloadData];
因為在這裡我報了一個錯誤,就是因為沒有重新獲取self.notes
導致,刪除了單元格,進行重新reloadData
的時候,numberOfRowsInSection
返回了一個錯誤的值,導致了崩潰。