与纸张
在界面生成器简单的解决方案创建在相同的.xib作为主窗口中的新窗口,它的大小小于主窗口。
取消选中Close
,Minimize
,Resize
和Visible At Launch
。 确保Title Bar
被选中(否则将打破第一响应者)。
为1
添加的NSTextField和两个NSButtons,设置OK按钮的tag
在.h文件添加
@property (weak) IBOutlet NSTextField *textField;
@property (weak) IBOutlet NSWindow *sheet;
在.m文件添加
- (IBAction)showSheet:(id)sender
{
[self.window beginSheet:self.sheet completionHandler:^(NSModalResponse returnCode) {
if (returnCode == NSModalResponseOK) {
self.mainTextField.stringValue = self.textField.stringValue;
}
}];
}
- (IBAction)dismissSheet:(NSButton *)button
{
[self.textField.window makeFirstResponder:nil]; // force end editing
[self.window endSheet:self.sheet returnCode:button.tag];
}
mainTextField
是在的NSTextField立场在主窗口
在Interface Builder新创建的窗口
- 的NSWindow出口的NSTextField插座连接到
IBOutlet sheet
- 连接到
IBOutlet textField
- 都NSButtons的动作连接到
IBAction dismissSheet
- 连接UI元素的动作以显示表格
IBAction showSheet
我也建议在这种情况下工作表窗口。但是,如果您不想使用图纸窗口,则可以使用NSWindowWillClose委托属性。像这样的例子secondWindow.delegate = controller; //在你的控制器中 - (void)windowWillClose:(NSNotification *)notification {//在第一个窗口中更新你的文本框} –