所以我在这个问题上找到了很多问题和答案,但我似乎仍然无法解决我的问题。 我有这个:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
if(tableView == self.moduleTableView){
UITableViewCell *cell = [_moduleTableView dequeueReusableCellWithIdentifier:@"TableIDCell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"TableIDCell"];
}
这一切都很好,适用于moduleTableView
,我有代码填充单个单元格。
但是,我后来有一个if(tableView == theOtherTableview)
并且代码永远不会执行,(使用了断点来检查)。因此,第二个tableview永远不会加载和填充。
我已经为numberOfRows
方法中的相同if语句做了我声明:
self.tblEvents.delegate = self;
self.tblEvents.dataSource = self;
self.otherTblEvents.delegate = self;
self.otherTblEvents.dataSource = self;
它仍然无法正常工作,我错过了什么吗?我认为我已将实施正确地与故事板相关联,我只是无法在cellForRowAtIndexPath:
(tableView == OtherTableView)
方法
由于
答案 0 :(得分:1)
我和你有完全相同的问题。 我发现最干净的解决方案是制作2个数据源类。这样,视图控制器中的代码就会减少很多。 基本上是这样的
DatasourceTblEvents *ds1 = [DatasourceTblEvents new];
DatasourceotherTblEvents *ds2 = [DatasourceotherTblEvents new];
self.tblEvents.dataSource = ds1;
self.otherTblEvents.dataSource = ds2;
这大大减少了数据源协议方法中if
语句的数量。通过这种方式,您可以像在一个表视图中一样在每个数据源类中实现数据源方法。
希望这有帮助。
答案 1 :(得分:0)
检查- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
方法是否返回零值(空数组计数),仅当numberOfRowsInSection
方法返回非零值时才会调用Cell for Row Method。
numberOfRowsInSection
应返回非零值