代码之家  ›  专栏  ›  技术社区  ›  memmons

iPhone SDK:如何将图像子视图添加到uiTableViewController并仍能看到单元格?

  •  0
  • memmons  · 技术社区  · 16 年前

    我正在将图像子视图添加到具有分组表的UITableViewController中。一旦我添加了image子视图,我就可以看到图像顶部的表格标题,但是单元格被绘制在图像后面。

    是否需要执行其他操作以确保表格单元格显示在背景图像的顶部?以下是我在uiTableViewControl的ViewDidLoad中使用的代码:

    CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 959.0f); 
    UIImageView *backImageView = [[UIImageView alloc] initWithFrame:myImageRect]; 
    [backImageView setImage:[UIImage imageNamed:@"somebackground.png"]]; 
    [self.view addSubview:backImageView];
    [self.view sendSubviewToBack:backImageView];
    [backImageView release];
    

    我意识到作为一种选择,我可以简单地创建一个复合视图,并将TableView放在它上面,而不是我在这里要做的。如果没有其他解决方案,我会这样做,但如果可能的话,我更愿意使用我正在尝试的方法。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Rob    15 年前

    这是一个分组表视图。来自苹果文档:

    The grouped style of table view provides a default background color and a default background view for all cells.
    

    这意味着在您的表后面插入了一个默认的图像视图。您希望用自己的视图替换它,如下所示:

    CGRect myImageRect = CGRectMake(0.0f, 0.0f, 320.0f, 959.0f); 
    UIImageView *backImageView = [[UIImageView alloc] initWithFrame:myImageRect]; 
    [backImageView setImage:[UIImage imageNamed:@"somebackground.png"]]; 
    self.tableView.backgroundView = backImageView;
    

    这将用您自己的视图替换另一个背景视图。否则,当表视图再次布局时,其他背景图像将覆盖您的。

        2
  •  0
  •   memmons    16 年前

    似乎UITableView在刷新时经常会重新排列视图的顺序。因此,您需要手动管理对任何表事件(如插入/删除/更新行)重置zorder。