一个UIView上的多个UITableViews

时间:2009-09-12 22:57:20

标签: iphone uitableview

我需要在一个UIView上有两个UITableView。我可以使用一个,这是代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [contentOne count];  // sets row count to number of items in array
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

    NSString *firstValue = [[NSString alloc] initWithFormat: @"Row %i% %", indexPath.row+1 ];
    NSString *secondValue = [contentOne objectAtIndex:indexPath.row];

    NSString *cellValue = [firstValue stringByAppendingString: secondValue]; // appends two strings

    [cell.textLabel setText:cellValue];



    return cell;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

}

我尝试了几种不同的方法。任何人?如果我可以为每个UITableView命名一个不同的名称,但它不会让我将tableView编辑为其他任何东西而不会崩溃。

3 个答案:

答案 0 :(得分:28)

所以你需要一些方法告诉两个tableView分开 - 你可以将“tag”属性设置为不同的值,或者在视图控制器上有一个指向每个视图的属性

@property (nonatomic, retain) IBOutlet UITableView *tableView1;
@property (nonatomic, retain) IBOutlet UITableView *tableView2;

然后将它们连接到界面构建器中的每个视图......

然后在你的视图控制器方法中可以做到

(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    if (tableView == self.tableView1) {
        return 37;
    } else if (tableView == self.tableView2) {
        return 19;
    } else {
        // shouldn't get here, use an assert to check for this if you'd like
    }
}

答案 1 :(得分:14)

实现此操作的最简单方法可能是拥有两个委托和数据源类,每个表视图一个。这将减少视图控制器代码中if(tableview == tableview1)的出现次数。

答案 2 :(得分:5)

This sample code可能会帮助你...