第一次按下视图控制器(从前一个视图控制器),调用所有委托方法(在导航控制器内)。
按下后返回上一个视图控制器,然后再次按下(第二次)
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
}
答案 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
方法,并使用断点检查并跳过。