子视图出现在表视图后面

发布于 2024-08-29 06:15:59 字数 632 浏览 10 评论 0原文

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

屏幕截图

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

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

有什么想法吗?谢谢!

When I add a subview to my UITableViewController, it seems to be underneath the tableview. I may be loading my subview incorrectly, or calling addSubview in the wrong place. The subview I'm referring to is the red area above the tabbar that also contains the "Click me" button:

screen shot

You can see that the cell lines kind of overlap. Here is where I'm adding the subview in my TableViewController:

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

Any ideas? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

何其悲哀 2024-09-05 06:16:00

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

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

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

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

I have had this issue myself and resolved it by not adding a view to the table, but rather adding the view to the table's superview.

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

This is particularly useful when you want to mask the entire table (e.g. loading screens).

N.B. I will usually add this to viewWillAppear: in the view's lifecycle.

疏忽 2024-09-05 06:16:00

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

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

视图具有绘图、交互和布局三个作用。拥有一个只扮演其中一个角色的视图是很好的。

When you call addSubview, it is probably the first view added to the table view. Later, all the cells and support views will be added over your view.

The best thing to do is create an empty view and add both the table view and overlay view to it, making sure the overlay view is above the table view.

Views serve the 3 roles of drawing, interaction and layout. It is fine to have a view that only fills one of those roles.

生活了然无味 2024-09-05 06:16:00

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

You can use - (void)sendSubviewToBack:(UIView *)view or - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index. addSubview always puts the new view in front.
EDIT: Sorry, misread the question, it looks like you want the subview to be in front.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文