【ios】關於[self.tableView reloadData]使用技巧

jaysun發表於2017-09-27
[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返回了一個錯誤的值,導致了崩潰。

相關文章