将数据添加到2个表

时间:2011-12-25 15:03:35

标签: iphone objective-c ios uitableview

我正在尝试将2 UITableView添加到UIViewController。我需要在这些表中添加不同的数据。

这是我添加2个表的方法(此代码已添加到ViewDidLoad方法中)

self.tableView2 = [[UITableView alloc] initWithFrame:CGRectMake(0,140,292,250) style:UITableViewStylePlain] ;
self.tableView2 .dataSource = self;
self.tableView2 .delegate = self;

然后是另一张表

self.tableView1 = [[UITableView alloc] initWithFrame:CGRectMake(0,0,320,100) style:UITableViewStylePlain] ;
self.tableView1 .dataSource = self;
self.tableView1 .delegate = self;

部分数量定义如下;

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView==tableView1) {
        return 12;
    } 
    else { return 10; }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath   *)indexPath
{
    // ...... more code here
    if (tableView == self.tableView1) {     
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault   reuseIdentifier:CellIdentifier];        
        }
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.textLabel.text=@"Cells .... ";
    } 
    else{
        // the remaining code here.. i am populating the cell as in the previous `IF` condition.
    }
}

问题是,我只得到第一个表填充而不是第二个表。为什么是这样?我该如何解决这个问题?

修改: 我还添加了以下代码,希望它能够进行更改

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

1 个答案:

答案 0 :(得分:3)

尝试按照这些步骤操作,以使两个表格视图具有相同的delegatedataSource

  1. 设置表视图的tag属性,并在这两个值上设置#define常量。这使代码保持一致。

  2. 在视图控制器子类中实现的委托和数据源方法中,根据您定义的常量测试tag属性值。

  3. 不要为表视图返回0部分,它根本不会显示任何单元格。

  4. 所以,例如:

    #define TV_ONE 1
    #define TV_TW0 2
    
    // setting the tag property
    self.tableView1 = [[UITableView alloc]
                       initWithFrame:CGRectMake(0,0,320,100)
                               style:UITableViewStylePlain];
    self.tableView1.tag = TV_ONE;
    self.tableView1.dataSource = self;
    self.tableView1.delegate = self;
    // the same for tableView2 using TV_TWO
    
    -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        if (tableView.tag == TV_ONE) {
            return 1;
        }
        else if (tableView.tag == TV_TWO) {
            return 1; // at least one section
        }
        else { return 0; }
    }