7

UITableView在 a 中使用了两个 s UIViewController,如何填充两个表格视图中的行和单元格?当我给第二个表格视图时,它说重复声明部分中的行数等。

4

4 回答 4

17

这就是为什么 dataSource/delegate 方法有一个tableView参数。根据其值,您可以返回不同的数字/单元格/...

- (void)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView == _myTableViewOutlet1)
        return 10;
    else
        return 20;
}
于 2012-08-06T06:43:27.497 回答
2

您的所有UITableViewDelegateUITableViewDatasource方法将只实施一次。您只需要检查正在调用该方法的表视图。

if (tableView == tblView1) {
    //Implementation for first tableView
}
else {
    //Implementation for second tableView
}

这将适用于所有 TableView 的委托和数据源方法,因为这tableView是所有方法中的公共参数

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {}
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {}

这里这里

这个链接也有你的问题的解决方案。

希望这可以帮助

于 2012-08-06T06:45:44.487 回答
2

请看一看。

首先在界面生成器中创建两个表视图,然后连接两个 IBOutlet 变量并为两个表视图设置委托和数据源。

在接口文件中

 -IBOutlet UITableView *tableView1;
 -IBOutlet UITableView *tableView2;

在实施文件中

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
  {
       if (tableView==tableView1)
       {
        return 1;
       }
       else 
       {
         return 2;
       }
  }

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
 {
    if (tableView==tableView1)
    {
         return 3;
    }
    else
    {
         if (section==0)
          {
            return 2;
          }
          else
          {
            return 3;
          }
     }
  }

 - (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==tableView1)
         {
           //cell for first table
         }
    else 
         {
           //cell for second table
          }
    return cell;
 }

使用此代码。希望有帮助

于 2012-08-06T07:06:16.727 回答
1

有可能,请看这里的参考代码:http: //github.com/vikingosegundo/my-programming-examples

另请参阅此页面:单个视图上的 2 个表格视图

于 2012-08-06T07:18:07.720 回答