如何在iphone的单视图控制器中使用两个以上的UITableView

时间:2012-08-06 06:40:09

标签: iphone xcode uitableview

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

4 个答案:

答案 0 :(得分:17)

这就是dataSource / delegate方法具有tableView参数的原因。根据其值,您可以返回不同的数字/单元格/...

- (void)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView == _myTableViewOutlet1)
        return 10;
    else
        return 20;
}

答案 1 :(得分: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 {}

查看herehere

This Link也有您问题的解决方案。

希望这有帮助

答案 2 :(得分:2)

请看一下。

首先在界面构建器中创建两个tableview,然后连接两个IBOutlet变量,并为两个tableviews设置委托和数据源。

在接口文件

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

使用此代码。希望帮助

答案 3 :(得分:1)

可以在这里查看参考代码:http://github.com/vikingosegundo/my-programming-examples

请同时参阅此页:2 tableview on a single view