1

当我向 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];
}

有任何想法吗?谢谢!

4

3 回答 3

4

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

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

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

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

于 2010-07-25T11:51:20.027 回答
2

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

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

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

于 2010-04-16T02:04:52.847 回答
0

您可以使用- (void)sendSubviewToBack:(UIView *)view- (void)insertSubview:(UIView *)view atIndex:(NSInteger)indexaddSubview总是把新的观点放在前面。
编辑:对不起,误读了这个问题,看起来你希望子视图在前面。

于 2010-04-16T01:52:16.190 回答