gpt4 book ai didi

objective-c - 等待用户关闭窗口从 NSTextField 获取值 - Cocoa

转载 作者:行者123 更新时间:2023-12-03 17:49:28 29 4
gpt4 key购买 nike

我正在 Cocoa 中开发一个 GUI,带有一个按钮和一个 NSTextField。单击该按钮时,会弹出另一个窗口,其中包含一个 NSTextField 和两个按钮:“确定”按钮和“取消”按钮。用户可以在第二个窗口的 NSTextField 中输入一些文本,当该窗口关闭时,相同的文本将转到第一个窗口的 NSTextField 中。

我的问题是:如何让我的应用程序等待用户关闭第二个窗口来更新第一个窗口的 NSTextField ?如果用户单击第二个窗口中的取消按钮,我不想更改第一个窗口中的任何内容。

只有模态窗 Eloquent 可能吗?

提前致谢,

雷南

最佳答案

使用工作表的简单解决方案

  • 在 Interface Builder 中,在与主窗口相同的 .xib 中创建一个新窗口,并将其大小设置为小于主窗口。

  • 取消选中关闭最小化调整大小启动时可见。确保选中标题栏(否则将破坏第一响应者)。

  • 添加一个 NSTextField 和两个 NSButton,将 OK 按钮的 tag 设置为 1。

  • 在.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 socket 连接到 IBOutlet 表
  • 将 NSTextField socket 连接到 IBOutlet textField
  • 将两个 NSButton 的操作连接到 IBAction DismissSheet
  • 将显示工作表的 UI 元素的操作连接到 IBAction showSheet

关于objective-c - 等待用户关闭窗口从 NSTextField 获取值 - Cocoa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31367346/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com