首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示NSPopOver

显示NSPopOver
EN

Stack Overflow用户
提问于 2013-03-01 17:25:33
回答 1查看 2.5K关注 0票数 0

我有一个类,它是从具有xib的窗口控制器派生的,它具有所有的功能。在这个xib中,我有一个显示大厅列表的表视图。如果我双击一个大厅名称,我将看到一个弹出窗口,其中显示了该大厅的特征。我有一个视图控制器类,我喜欢在其中以编程方式创建弹出窗口,

代码语言:javascript
复制
NSPopover *popover;
NSViewController *popoverViewController;

-(void)displayPopover{
    popover = [[NSPopover alloc] init];
    [popover setBehavior: NSPopoverBehaviorApplicationDefined];
    [popover setDelegate: self];
    popoverViewController = [[CHBPopover alloc] initWithNibName: @"MYViewController" bundle: nil];
    [popover setContentViewController: popoverViewController];
    [popover setContentSize: popoverViewController.view.frame.size];

    [popover showRelativeToRect: NSMakeRect(700, 400, 5, 5) 
                         ofView: [[NSApp keyWindow] contentView]
                  preferredEdge: NSMaxXEdge];
}

在我的窗口控制器类中,我有一个方法,

代码语言:javascript
复制
-(IBAction)featuresDisplay:(id)sender{

    if([_hallNamesList selectedRow] == -1){
        [self setFeaturesList:nil];
    } 
    else {

       //[self.hallFeaturesPopOver showRelativeToRect:[_hallNamesList frameOfCellAtColumn:0 row:[_hallNamesList selectedRow]] ofView:_hallNamesList preferredEdge:NSMaxXEdge];
       // [pop.displayPopover ];
       NSDictionary *hallFeaturesDictionary;
       hallFeaturesDictionary = [_hallNames objectAtIndex:[_hallNamesList selectedRow]];
       _hallId=[hallFeaturesDictionary valueForKey:@"hallId"];
       [officeDetails setHallName:[hallFeaturesDictionary valueForKey:@"hallName"]];

       _featuresList=[conferenceHall getConferenceHallFeaturesWithDetails:officeDetails];
       NSLog(@"features list=%@",_featuresList);
      [self setFeaturesList:[conferenceHall getConferenceHallFeaturesWithDetails:officeDetails]];
    }
}

如何在此IBAction中调用popover方法?我需要双击一行并显示弹出窗口。我该怎么做呢?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-04-20 22:43:25

显示坐标似乎有很大的偏差。弹出框的矩形是相对于ofView参数的。从这里的(0,0)开始,它应该会在keywindow.contentView的左上角显示弹出窗口。然后微调位置。您可能必须从IBAction传入实际的矩形(可能是表单元格边界)。视图矩形中弹出式视图的大小部分很重要,因为弹出式鼠标相对于该尺寸移动。我也会传入视图来附加弹出窗口,因为有时候当你点击一个视图时,它并不会变成键。

请注意,只有在计划将popover分离到浮动窗口中时,popover的委托才是必需的。还可以对行为进行实验。从NSPopoverBehaviorTransient开始。我不确定您实际上需要对应用程序定义的行为做什么,但至少对于瞬态行为,它对我来说很好。

最后,您不需要在每次显示弹出窗口时都重新创建它。只需在awakeFromNib中设置它,然后在每次需要时调用showRelativeToRect...。随着瞬时行为的发生,它将自动消失。

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

https://stackoverflow.com/questions/15154372

复制
相关文章

相似问题

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