UITableview不会调用cellForRowAtIndexPath

时间:2014-05-11 09:10:12

标签: ios objective-c uitableview

第一次按下视图控制器(从前一个视图控制器),调用所有委托方法(在导航控制器内)。

按下后返回上一个视图控制器,然后再次按下(第二次)

cellForRowAtIndexPath未被调用,但numberOfRowsInSection和numberOfSectionsInTableView被调用。

中调用reloadData
-(void)viewWillAppear:(BOOL)animated
{
    [self.tableView reloadData];
}

我试过

-(void)viewDidAppear:(BOOL)animated
{
    [self.tableView reloadData];
}

并没有帮助。

修改

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1; // called
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 3; // called
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // relevant code for cell - THIS METHOD IS NOT CALLED SECOND TIME
}

3 个答案:

答案 0 :(得分:1)

如果您没有找到上述任何有效理由,我将重点介绍 可以犯的另一个错误是(就像我曾经做过的那样)。

需要注意的步骤是

1)初始化自定义表格视图作为第一步 2)在将tableView添加到视图之前设置委托和数据源。

如果在将tableview添加到你的self.view对象之后错误地完成了这些步骤,那么这将是一种让你自己挣扎的无声方式。正确的顺序如下:

self.myTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0,    myViewwidth, 120) style:UITableViewStylePlain];
self.myTableView.tag = MY_TABLEVIEW_TAG;
self.myTableView.delegate = self;
self.myTableView.dataSource = self; 
[self.view addSubview:self.myTableView];

答案 1 :(得分:0)

当您将基础数据源(数组或字典)定义为weak时,总是会发生这种情况,第一次被推送,数据存在,解除分配时,它会释放,您将失去对它的控制权。

仔细检查弱/强条件,并在再次按下之前选择设置数据源。

答案 2 :(得分:0)

请检查您是否已将代理和数据源设置/连接到文件所有者。

并检查模型的数组计数,如果它包含的值不是?

NSLog采用numberOfRowsInSection方法,并使用断点检查并跳过。