【问题标题】:Subview appears behind tableview子视图出现在 tableview 后面
【发布时间】:2011-02-08 15:41:28
【问题描述】:

当我向 UITableViewController 添加子视图时,它似乎位于 tableview 下方。我可能错误地加载了我的子视图,或者在错误的地方调用了addSubview。我指的子视图是标签栏上方的红色区域,其中还包含“点击我”按钮:

您可以看到细胞系有点重叠。这是我在 TableViewController 中添加子视图的地方:

- (void)viewDidLoad {
    [super viewDidLoad];
    CGRect hRect = CGRectMake(0, 170, 320, 480);
    HomeScreenOverlayView *homeView = [[HomeScreenOverlayView alloc] initWithFrame:hRect];
    [self.tableView addSubview:homeView];
    [homeView release];
}

有什么想法吗?谢谢!

【问题讨论】:

    标签: iphone uitableview addsubview


    【解决方案1】:

    您可以使用- (void)sendSubviewToBack:(UIView *)view- (void)insertSubview:(UIView *)view atIndex:(NSInteger)indexaddSubview 总是将新视图放在前面。
    编辑:抱歉,误读了问题,看起来您希望子视图位于前面。

    【讨论】:

      【解决方案2】:

      当你调用 addSubview 时,它可能是第一个添加到表视图的视图。稍后,所有单元格和支持视图都将添加到您的视图上。

      最好的办法是创建一个空视图并将表格视图和叠加视图添加到其中,确保叠加视图位于表格视图上方。

      视图服务于绘图、交互和布局这 3 个角色。拥有一个只满足其中一个角色的视图是很好的。

      【讨论】:

        【解决方案3】:

        我自己也遇到过这个问题,并通过不向表格添加视图,而是将视图添加到表格的超级视图来解决它。

        UIView *viewToAdd = [[UIView alloc] initWithFrame: self.view.frame];
        [self.view.superview addSubview: viewToAdd];
        

        当您想要屏蔽整个表格(例如加载屏幕)时,这特别有用。

        注意我通常会将它添加到 viewWillAppear: 在视图的生命周期中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-07
          • 1970-01-01
          • 2011-01-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多