1

我是一个新手 ios 程序员。目前我正在开发一个特定于 ipad 的项目。在这个项目中需要一些自定义绘图。所以我制作了一个子类,在方法中UIview制作了必要的绘图并通过. 到现在为止这一切都还好。现在我要做的是在我的子类中创建一些下拉列表。为此,我遵循了非常基本的方法。我制作了一个按钮并在其下方放置了一个按钮。加载时仍然隐藏。但是当用户触摸按钮时,会显示并显示从数组中获取的单元格中的数据.我也能做到这一点。drawRectUIViewloadViewUIViewControllerUIviewUITableViewUITableViewtable view

我不能做的是让同样的事情发生在多个。对于UITableView另一个table view我做了这样的事情......

- (id)initWithFrame:(CGRect)frame
{
     arryData = [[NSArray alloc] initWithObjects:@"Samsung",@"HTC",@"Apple",nil]; //data for first table
     parameterData = [[NSArray alloc]initWithObjects:@"Tax Expenses",@"Pretax amount",@"assets",nil]; //data for second table
     tabletableForComany.dataSource = self;
     tableForComany.delegate = self;
     tableForParameter.delegate = self;
     tableForParameter.dataSource = self;
}

在我运行程序时实现其他委托和数据源方法后,我得到了异常

Assertion failure in -[UITableViewRowData _updateSectionRowDataArrayForNumSections:]

我认为我的这种方法有问题

- (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 ];
    }

// Set up the cell...

   if(tableView.tag == 1)
   {
     cell.textLabel.text = [arryData objectAtIndex:indexPath.row];
     return cell;
   }

   else if (tableView.tag == 2)

   {
    // Set up the cell...
      cell.textLabel.text = [parameterData objectAtIndex:indexPath.row];
      return cell;

   }
}

当我只设置一个表格时,我datasource没有错误,但任何表格单元格中也没有显示数据。帮助将不胜感激。提前致谢

4

2 回答 2

0

确保在数据源方法中正确返回行数numberOfRowsInSection:

参考iOS 错误“请求无效部分的矩形”是什么意思?

于 2013-07-10T09:22:24.613 回答
0

正如您自己发现的那样,为多个 UITableViews 设置一个数据源/委托似乎是个问题。

我不太了解 UITableViews 的内部工作原理来解释断言失败,但我认为一个好的解决方案是使用多个数据源和委托,每个表视图一个。这种方法在多个stackoverflow帖子中都有描述,这个应该给你一个想法。

代码中的 if 语句通常被认为是代码异味策略模式是清理代码的一种优雅方式。作为奖励,我希望它也能解决您的问题。

于 2013-07-10T08:53:32.953 回答