2012-06-30 111 views
0

也許這是一個類似的開始,但這是事實。reloadData不會調用cellforrowatindexpath

首先抱歉,如果這是格式不正確,第一次這樣做。我一直在使用stackoverflow來查找很長一段時間的幫助,這非常有幫助(謝謝大家),但這是我第一次發佈自己的問題。這個問題已經被問過很多次了,但是當我調用[self.tableView reloadTable]時,方法numberOfSectionsInTableView和numberOfRowsInSection被調用,但不是cellForRowAtIndexPath。

每一個答案,當搜索一直是一個變化我看到:

  1. 的是的tableView nil
  2. numberOfRowsInSection是0
  3. 的tableView的委託/數據源未設置。這些都不是我的情況,所以我想知道還有什麼可能是錯的。

但我不確定4.在錯誤的uiTableView上調用reloadTable。或者它是關於其他一些錯誤的。

現在我的APP是類似於TableView.also 的Dropbox, 第一,當我們登錄到它,我們得到一個文件列表(包括目錄),我說在視圖的底部工具欄由[self.navigationController.view addSubview:toolBar],當我觸摸按鈕項「刷新」時,它調用[self.tableView reloadData]並且運行良好。

其次,當我們選擇一個目錄,我們將得到一個新的文件目錄表是由pushViewControllerself.navigationController,但是這一次,當我們觸摸「刷新」,語句[self.tableView reloadData]調用numberOfSections,numberOfRows,不是的cellForRowAtIndexPath

關於爲什麼cellForRow不會被第二次調用的任何想法?提前致謝。

FileListViewController.h 
@interface FileListViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource>  

FileListViewController.m 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (isDir) {  
     FileListViewController *fileListViewController = [[FileListViewController alloc] init]; 
     [self.navigationController pushViewController:fileListViewController animated:YES]; 
    } 
} 

- (void)refresh 
{ 
    [Utilities refresh];//Utilities is my custom class. 

    [self viewDidLoad]; 
    [self.tableView reloadData]; 
} 

我的表視圖部分和行的迴歸數不爲0

當我加入NSLog(@"Calling reloadData on %@", self.tableView);到「刷新」:

- (void)refresh 
{ 
    [Utilities refresh];//Utilities is my custom class. 

    [self viewDidLoad]; 
    NSLog(@"Calling reloadData on %@", self.tableView); 
    [self.tableView reloadData]; 
} 

然後返回上調用reloadData; contentOffset:{0,0}>。委託:FileListViewController,DataSource:FileListViewController

回答

1

您不應該手動調用[self viewDidLoad]。該方法被設計爲被覆蓋,並被自動調用。欲瞭解更多信息,請登錄read this documentation

+0

感謝您的建議。我刪除了[self viewDidLoad],我同意你的看法。但現在問題仍然存在,當我觸摸目錄下的「刷新」按鈕時,[self.tableView reloadData]不會調用cellForRowAtIndexPath。是因爲我分配一個新的tableView FileListViewController * fileListViewController = [[FileListViewController alloc] init]? – Philip

+0

可能你沒有正確連接新的tableView(數據源和委託)或手動alloc/init新的tableView,並將其分配給稍後/早期從xib啓動的屬性。 –

相關問題