iOS - 水平滚动的UIScrollView与多个UITableViews

3

UIScrollView可以水平滚动,而UITableView则在其中垂直滚动,但在水平滚动时无法加载不同的数据。

我有一个滚动视图,在屏幕上水平滚动,并在其中添加了多个表视图,希望在滑动时在表视图中显示不同的数据。我尝试过了,但没有成功 :(

NSArray *arr1 = [[NSArray alloc] initWithObjects:@"1",@"2",@"3", nil];
NSArray *arr2 = [[NSArray alloc] initWithObjects:@"4",@"5",@"6", nil];
NSArray *arr3 = [[NSArray alloc] initWithObjects:@"7",@"8",@"9", nil];
NSArray *arr4 = [[NSArray alloc] initWithObjects:@"10",@"11",@"12", nil];
arrData = [[NSMutableArray alloc] initWithObjects:arr1,arr2,arr3,arr4, nil];

int width=0;

for (int i = 0; i<[arrData count]; i++) {
    tblData = [[UITableView alloc] initWithFrame:CGRectMake(width, 20, 300, 245) style:UITableViewStylePlain];
    tblData.dataSource = self;
    tblData.delegate = self;
    [tblData setBackgroundColor:[UIColor clearColor]];
    tblData.separatorColor = [UIColor blackColor];
    [scrHorizontal addSubview:tblData];
    width+=300;
}

[self.scrHorizontal setContentSize:CGSizeMake(([arrData count])*300, self.scrHorizontal.frame.size.height)];

在一个滚动视图中有4个页面,每个页面包含4个表格视图。当滑动滚动视图时,我想在第一个表格上显示1、2、3,在第二个表格上显示4、5、6,以此类推...请帮我实现。谢谢!
1个回答

3
我看过你的代码,你可以使用标签来实现。
  1. set tag to tableview in loop

    for (int i = 0; i<[arrData count]; i++) {
    tblData = [[UITableView alloc] initWithFrame:CGRectMake(width, 20, 300, 245) style:UITableViewStylePlain];
    
    tblData.tag=i;
    tblData.dataSource = self;
    tblData.delegate = self;
    [tblData setBackgroundColor:[UIColor clearColor]];
    tblData.separatorColor = [UIColor blackColor];
    [scrHorizontal addSubview:tblData];
    width+=300;
    }
    

现在在cellForRowAtIndexPath方法中,只需像这样使用它即可:

NSArray *arr = [arrData objectAtIndex:tableView.tag];
cell.textLabel.text = [arr objectAtIndex:indexPath.row];

请查看ScrollViewDemo

希望对您有所帮助。


+1,我之前尝试过使用标签,但没有正确使用,谢谢你的帮助,伙计 :) 它完美地工作了! - D-eptdeveloper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接