我正在使用聊天窗格作为 NSTableView 构建一个聊天应用程序,并且每条消息都保存在该表中一行的自定义单元格中。我需要使表格行高相对于消息大小。在尝试计算 NSTextField 中的换行文本的大小(保存消息)经历了许多挫折之后,然后发现 NSTextField 对此非常不利(参见此处,我的发现证实了这一点。此外,NSTextField 完全随机调整大小有时(带有“?”的单个消息将调整为大约 5 行高......)我希望 NSTextView 会避免),我决定使用 NSTextView 代替。
但是我无法将 NSTextView 添加到我的应用程序中,它被嵌入到 NSScrollView 中。我当然不希望我的消息框滚动——我希望它们根据内容的大小而增长。但是我无法将 TextView 拖出 ScrollView。我尝试添加一个自定义视图并将其设置为 TextView,但是尽管我按照我完成 TextField 的方式将它连接到我的 ViewController,但它没有显示任何内容。
我正在寻找一个从 AppDelegate 创建窗口的简单(和 Mac 特定的)示例。我的程序有一个登录页面,可能需要也可能不需要在应用程序启动时显示,具体取决于用户是否已经登录。
到目前为止,我的 AppDelegate 的 applicationDidFinishLaunching 看起来像这样:
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Insert code here to initialize your application
let main = NSStoryboard(name : "Main", bundle: nil).instantiateController(withIdentifier: "MainWindow") as! NSWindowController
main.window?.becomeFirstResponder()
let mainVc = NSStoryboard(name:"Main", bundle: nil).instantiateController(withIdentifier: "MainViewController") as! ViewController
main.window?.contentViewController = mainVc
}
Run Code Online (Sandbox Code Playgroud)
但是当我运行应用程序时,什么也没有发生。我应该注意到我已经取消了应用设置的“主界面”属性。如果我不取消设置,则会出现我想要的两个版本的窗口,这表明我对上述内容几乎是正确的。
我错过了什么?