我在视图控制器中有2个tableviews(table1,table2)。我有2个数据数组(dataArray1,dataArray2)。 我想用相应的数据数组加载表视图,即(table1 = dataArray1,table2 = dataArray2)。我正在尝试下面的代码。但应用程序崩溃了吗?这段代码有什么问题?任何帮助,将不胜感激。请不要建议使用2个视图控制器。
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if(tableView == self.table1)
return [dataArray1 count];
if(tableView == self.table2)
return [dataArray2 count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier];
}
if(tableView == self.table1)
{
cell.textLabel.text =[dataArray1 objectAtIndex:indexPath.row];
}
if(tableView == self.table2)
{
cell.textLabel.text =[dataArray2 objectAtIndex:indexPath.row];
}
return cell;
}
答案 0 :(得分:1)
为两个tableviews提供2个不同的单元格标识符
因为两个表格单元格不同并且应该重复使用,所以为了维护重用,正确的唯一标识符需要单独使用
试试这个
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier1 = @"Cell1";
static NSString *CellIdentifier2 = @"Cell2";
UITableViewCell *cell;
if(tableView == self.table1)
{
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier1];
if (cell == nil) {
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier1];
}
cell.textLabel.text =[dataArray1 objectAtIndex:indexPath.row];
}
if(tableView == self.table2)
{
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier2];
if (cell == nil) {
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier2];
}
cell.textLabel.text =[dataArray2 objectAtIndex:indexPath.row];
}
return cell;
}
答案 1 :(得分:1)
通常,您不会在一个视图中创建两个表视图。 而是创建一个部分。 即使这样,如果你仍然需要两个表视图,最好使用View Class并为它们创建单独的委托。 我有一个代码 https://github.com/bishalg/BGRadioList 其中显示了使用带有表视图的视图。 希望它对你有所帮助。