滚动视图中的Tableview未显示

时间:2014-10-21 04:47:05

标签: ios uitableview uiscrollview pagination

我试图实现像twitter的iOS应用程序这样的视图。视图控制器包含一个滚动视图,可以水平滚动,在scrollview的每个页面中,都有一个tableview。为简单起见,我刚刚创建了两个UITableView,并将它们添加到两个UIView容器中,因为除了tableView之外,我还有一些要显示的视图,因此tableView和所有其他视图都被添加为每个页面的viewContainer的子视图。

视图层次结构如下:

UIViewController
--view
  --scrollView
    --view1
      --tableView1
      --someOtherViews
    --view2
      --tableView2
      --someOtherViews 

在viewDidLoad方法中,我实现了类似的东西:

-(void)viewDidLoad
{
    //Some other setup...

    scrollView = [[UIScrollView alloc]initWithFrame(0,y0,self.view.frame.size.width,self.view.frame.size.height-offset)];
    scrollView.pageEnabled = YES;
    scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 2, self.view.frame.size.height - offset);
    [self.view addSubView:scrollView];

    view1 = [[UIView alloc]initWithFrame:CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height-offset)];
    tableView1 = [[UITableView alloc]initWithFrame:CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height-offset) style:UITableViewStyleGrouped];
    tableView1.delegate = self;
    tableView1.dataSource = self;
    //other setup...
    [view1 addSubView:tableView1];
    [scrollView addSubView:view1];

     view2 = [[UIView alloc]initWithFrame:CGRectMake(self.view.frame.size.width,0,self.view.frame.size.width,self.view.frame.size.height-offset)];
    tableView2 = [[UITableView alloc]initWithFrame:CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height-offset) style:UITableViewStyleGrouped];
    tableView2.delegate = self;
    tableView2.dataSource = self;
    //other setup...
    [view2 addSubView:tableView2];
    [scrollView addSubView:view2];
}

出于测试目的,我为两个表填充相同的数据源。问题是如果我只添加一个tableView容器(例如view1,其中包括tableView1)作为scrollView的子视图,视图显示完美,可以页面到第二页,这是空白,视图控制器可以加载和节目。第二个也一样。

但是,如果我使用上面的代码,它将两个视图容器添加为scrollView的子视图,则加载此视图控制器时应用程序将崩溃。但是,如果我添加第二个视图容器(view2或view1),但在视图容器中,我不是将tableView添加为其子视图,而是有其他子视图,它可以很好地工作。

所以我认为问题可能来自两个tableViews。但是,我试着调试了几个小时,但仍然没有运气。有人可以帮帮我吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为这与您UITableViewDelegateDataSource方法有关。 可能是你崩溃的原因。

-Suggestion:

尝试将UITableView设为iVar和dataSource方法 指定您想要的tableView

像:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:   (NSInteger)section
{
    if(tableView == _tableView1)
        return _table1DataSource.count;
    else
        return _table2DataSource.count;
}

尝试用其他方法。