與紙張
在界面生成器簡單的解決方案創建在相同的.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 {//在第一個窗口中更新你的文本框} –