多个NSPopover相互擦除

时间:2015-09-17 09:15:35

标签: objective-c xcode macos

我试图将两个NSPopover放在.xib文件上的两个帮助按钮上。

为此,我在我的.h

中宣布
@interface ExportPreferences : NSPreferencePane <NSPopoverDelegate>
{
    NSWindow *window;
    NSPopover *popover;
    NSUserDefaults *prefs;
    NSMutableArray *myArran;
    IBOutlet NSButton *images;
    IBOutlet NSPopUpButton *modalities;
    IBOutlet NSPathControl *path;
    IBOutlet NSPopUpButton *tree;
    IBOutlet NSPopUpButton *extension;
}
@property (assign) IBOutlet NSWindow *window;
@property (assign) IBOutlet NSPopover *popover;

@end

我的.m中有两种不同的方法:

- (IBAction) showInfoTreePopover {
    [[self popover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxXEdge];
}
- (IBAction) showInfoTypePopover {
    [[self popover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxXEdge];
}

然后,在我的.xib中我声明了

  • 带有弹出窗口控制器的Popover
  • 自定义视图
  • 标签(简历上)

我联系了:

  • 帮助按钮指向其对应的方法(一个用于树,一个用于类型)
  • 文件所有者到Popover
  • 弹出窗口控制器到自定义视图

由于我实现了两个NSPopover,我做了两次,两个Popover,两个Popover View Controller,两个Custom View,两个标签。

当我编译时,一切正常,但是当我测试它时,似乎只有我的第二个Popover出现在两个按钮上。似乎实施第二个Popover,抹去了第一个。

我怎么补丁呢?

1 个答案:

答案 0 :(得分:0)

好吧,我回答了我自己的问题,但我想如果有人面临同样的问题,我可能会给出答案。

当使用两个NSPopovers时,我必须声明两个不同的Outlets,

html {
  height: 100%;
}

body {
  height: 100%;
  position: relative;
}

#wrapper {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  height: 100%;
  padding: 60px 0;
  position: relative;  
}

#header {
  width: 100%;
  height: 60px;
  background: #171717;
  position: absolute;
  top: 0;
  left: 0;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

#content {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  height:100%;
  background: gray;
  display: flex;
}

#left {
  background: green;
  width: 200px;
  flex: 0 0 200px;
}

#right {
  background: red;
  width: 100%;
  position: relative;
}

#footer {
  width: 100%;
  height: 60px;
  background: #171717;
  bottom: 0;
  left: 0;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

另外,两个属性

NSPopover *treePopover;
NSPopover *typePopover;

现在,链接工作完美。