如何在特定位置显示NSWindow作为表格

时间:2013-04-29 10:04:38

标签: objective-c macos cocoa cocoa-sheet

我有一个这样的窗口,有3个子视图,每个子视图都有按钮。点击那些 - 我需要显示表格。

enter image description here

enter image description here

通过使用此代码,工作表位于窗口的中心。

- (IBAction)closeSubWindow:(id)sender{
    [NSApp endSheet:self.subWindow];
    [self.subWindow orderOut:nil];

}

- (IBAction)showSubWindow:(id)sender {
    [NSApp beginSheet:self.subWindow
       modalForWindow:self.window
        modalDelegate:self
       didEndSelector:nil
          contextInfo:nil];
}

是否有任何选项或方法可以在特定的坐标下显示表格?

编辑:

我目前的实施是使用NSPopover。我可以将此NSPopover设置为像表一样动画吗?

2 个答案:

答案 0 :(得分:3)

查看NSWindow委托方法-window:willPositionSheet:usingRect:

答案 1 :(得分:0)

根据您的定义,您可以看到一张工作表。所以不,没有办法把它放在不同的位置。你可以创建一个自己的实现,但是在你的情况下,最好不要使用工作表,例如一个NSPopover。从OSX 10.7开始,这是一个很好的方法,可以使用临时视图来显示/输入值。通过使用瞬态(或半瞬态)样式,框架负责管理显示(在不再需要时自动隐藏弹出窗口)。当然,您也可以在其上设置一个OK按钮来提交更改。

popover也有点模态,就像表格一样,所以,在功能上它们非常相似,但你对它的位置有更多的自由。