首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >操纵NSSavePanel的accessoryView?

操纵NSSavePanel的accessoryView?
EN

Stack Overflow用户
提问于 2012-03-03 12:58:11
回答 1查看 1.4K关注 0票数 2

我有一个带有附件视图的NSSavePanel设置,其中包含一个格式弹出菜单和一个带有各种选项的表格选项卡视图。它正确地显示在面板上,但我似乎无法调整它的大小。

在accessoryView上调用-setFrameSize会导致一次奇怪和不正确的大小调整,然后对任何后续调用都没有响应。视图中的其他控件完全拒绝响应任何呼叫。

NSSavePanel是否像NSSearchField一样,只使用分配给它的菜单作为模板?如果是这样,我如何在当前激活的保存面板中操作附件视图的特定实例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-04 05:26:32

我的经验是(特别是对于必须在10.5上运行的代码),为了处理NSSavePanel的accessoryView中的置换大小,我们必须删除它(将其设置为零)并重新添加它。在10.7 (我相信是10.6)中,在更改frameSize之后调用[savePanel layoutIfNecessary]似乎就足够了。

在本例中,由于您提到您正在使用不可见的选项卡视图。通常,选项卡视图具有一致的大小。如果您希望根据不同子视图的内容调整NSSavePanel的大小,您可能希望将它们作为单独的视图(在相同或其他NIB文件中),并将它们作为子视图加载到NSSavePanel中。

在NIB是从磁盘上的插件模块列表动态加载的情况下,我成功地做到了这一点,在这种情况下,我使用了一个包含弹出菜单的整体视图,然后使用-setFrameSize:调整了该视图的大小,以便在向其添加子视图之前对其进行更改。然后,我使用addSubview:将子视图添加到现有视图中,并在更改大小并添加子视图后调用[savePanel layoutIfNecessary]

下面是向现有exportFormatOptionsView视图(包含弹出菜单)添加exportAccessoryViewController (对于我们来说,这是根据对弹出菜单的选择而更改的内容)的四个代码片段:

代码语言:javascript
复制
   NSSize currentSize = [exportFormatOptionsView bounds].size;
   NSView *newView = [exportAccessoryViewController view];
   NSSize newSize = NSMakeSize( currentSize.width, currentSize.height+[newView bounds].size.height);
   // resize the parent view
   [exportFormatOptionsView setFrameSize: newSize];
   // move the child view
   [exportFormatOptionsView addSubview: newView];

当然,当您动态地切换这些视图时,您需要确保将中间视图的视图大小更改回原始大小,以便稍后可以添加补充视图,我就是这样做的:

代码语言:javascript
复制
    NSSize currentSize = [exportFormatOptionsView bounds].size;
    NSView *oldView = [exportAccessoryViewController view];

    // pull it out
    [oldView removeFromSuperview];
    NSSize newSize = NSMakeSize( currentSize.width, currentSize.height-[oldView bounds].size.height);
    [exportFormatOptionsView setFrameSize: newSize];
    exportAccessoryViewController = nil;

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9543604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档