reloadData不会调用cellforrowatindexpath

时间:2012-06-30 02:07:52

标签: objective-c call reloaddata

也许这是一个类似的开始,但这是真的。

首先抱歉,如果格式不正确,第一次这样做。我一直在使用stackoverflow来寻求帮助很长一段时间,它非常有帮助(谢谢大家),但这是我第一次发布自己的问题。这个问题已被多次询问,但是当我调用[self.tableView reloadTable]时,会调用numberOfSectionsInTableView和numberOfRowsInSection方法,但不会调用cellForRowAtIndexPath。

我在搜索时看到的每个答案都是以下的变体:

  1. tableView为nil
  2. numberOfRowsInSection为0
  3. 未设置tableView的委托/数据源。这些都不是我的情况,所以我想知道还有什么可能是错的。
  4. 但我不确定4.在错误的uiTableView上调用reloadTable。或者是其他一些错误。

    现在我的APP类似于 dropbox , 首先,当我们登录它时,我们在TableView中得到一个文件列表(包括目录)。我在[self.navigationController.view addSubview:toolBar]的视图底部添加了一个工具栏,当我触摸按钮项“刷新”时,它致电[self.tableView reloadData]并且运作良好。

    第二,当我们选择一个目录时,我们将获得pushViewController self.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];
    }
    

    然后它返回Calling reloadData on; contentOffset:{0,0}&gt;。委托:FileListViewController,DataSource:FileListViewController

1 个答案:

答案 0 :(得分:1)

您不应手动拨打[self viewDidLoad]。此方法旨在被覆盖,并自动调用。有关详情,请read this documentation