gpt4 book ai didi

objective-c - 将 NSView 添加到窗口而不是在顶部?

转载 作者:行者123 更新时间:2023-12-03 16:41:30 25 4
gpt4 key购买 nike

我以编程方式添加一个 subview ,并将其添加到主窗口上下文 View 中,以覆盖整个上下文 View ,如下所示:

loadingView = [[LoadingView alloc] initWithFrame:[mainWindow.contentView frame]];

NSLog(@"%@", [mainWindow.contentView subviews]);
[mainWindow.contentView addSubview:loadingView];
NSLog(@"%@", [mainWindow.contentView subviews]);

[mainWindow makeFirstResponder:loadingView];

NSLog 确认 loadingView 最后添加到 contentView subview 中。我也尝试过:

loadingView = [[LoadingView alloc] initWithFrame:[mainWindow.contentView frame]];
[mainWindow.contentView addSubview:loadingView positioned:NSWindowAbove relativeTo:nil];
[mainWindow makeFirstResponder:loadingView];

这也不起作用。由于某种原因,窗口底部的两个表格 View (在 IB 中创建)位于我添加的新 View 的顶部。这是窗口的快照,请注意,红色部分应该位于进度条和一些标签的顶部:

loadingView

还值得注意的是,该 View 的 alpha 设置为 0.9,这就是为什么您可以看到它后面的情况。

GW

最佳答案

如果将一个 View 放置在另一个 View 之上,则前一个 View 中的对象将在上面的 View 中可见。您需要做的是从窗口中删除以前的 View ,然后添加一个新的 subview 。

尝试使用:

//Create IBOutlet of your tableview in your .h file
IBOutlet NSTableView* yourTableView;

// Add this line where you are adding your subview to remove the tableview from superview.
[yourTableView removeFromSuperview];

// Then add your loading view as the subview
loadingView = [[LoadingView alloc] initWithFrame:[mainWindow.contentView frame]];
[mainWindow.contentView addSubview:loadingView];

然后,每当您想要重新使用 tableView 时:

[window contentView]addSubview: yourTableView];

关于objective-c - 将 NSView 添加到窗口而不是在顶部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19623977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com