- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我基于文档的应用程序中,我使用 10.10 的新 API 添加了一个标签 (NSTextField
) 到我的文档窗口的标题栏:
我从我的主 NSViewController
调用它,我可以免费控制窗口附带的主视图:
class MasterViewControler: NSViewController {
@IBOutlet weak var window: NSWindow!
override func viewDidLoad() {
super.viewDidLoad()
window.addTitlebarAccessoryViewController(TitleBarSubviewControler(nibName: "TitleBarSubview", bundle: NSBundle.mainBundle())!)
}
这样就可以按照文档的建议将包含我的标签的自定义 View 加载到我的标题栏中。到目前为止一切都很好。
现在,在某些时候我必须在运行时访问该标签以更改它的字符串值,从我的应用程序中的某个地方。
我尝试将标签的 IBOutlet
添加到控制 subview 的 NSTitlebarAccessoryViewController
中,正如 NSTitlebarAccessoryViewController
所期望的那样,我可以操纵标签 stringValue
。但我不能从那里做太多事情。
我尝试在 NSTitlebarAccessoryViewController
中创建一个函数来设置标签字符串,并通过我的 mainViewControler 中的
,但尽管我可以访问此函数并向其传递一个字符串,但函数中标签 NSTitlebarAccessoryViewController()
的全局实例访问该函数IBOutlet
的引用始终解包为 nil(崩溃)。
那么为什么当从函数所在的类内部以外的任何地方访问时,outlet 在函数中展开为 nil。?
我必须能够从 Controller 访问标签或在我的窗口 mainView
中查看。
我该怎么做...?
最佳答案
我终其一生都找不到一种方法来引用我通过 IB 添加到 Windows 标题栏的 subview 中的标签,所以我能找到的最佳解决方法是:
class WindowControler: NSWindowController {
var titlebarLabel:NSTextField?
override func windowDidLoad() {
super.windowDidLoad()
// add the titlebar subview
window?.addTitlebarAccessoryViewController(TitlebarSubviewControler(nibName: "TitlebarSubview", bundle: NSBundle.mainBundle())!)
// get reference to the titlibarLabel I just added in the line above
var subviewsOfTheLastTitleBarView: AnyObject? = window?.standardWindowButton(NSWindowButton.ZoomButton)?.superview?.subviews.last?.subviews[0]
var titlebarNSTextField: AnyObject? = subviewsOfTheLastTitleBarView?.subviews[0]
titlebarLabel = (titlebarNSTextField! as NSTextField)
}
@IBAction func tempbuttonclicked(sender: AnyObject) {
titlebarLabel?.stringValue = "Text seen in titlebar subview"
}
}
所以我在这里搜索标题栏,在我将它添加到 windowDidLoad 的第一行中的标题栏后立即找到 NSTextField,并且认为很多都是理所当然的。
我很担心这会很容易坏掉,只是不确定是否要这样做。非常感谢任何更好的解决方案。
关于swift - NSTitlebarAccessoryView 中 NSTextField 的 IBOutlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28399289/
在我基于文档的应用程序中,我使用 10.10 的新 API 添加了一个标签 (NSTextField) 到我的文档窗口的标题栏: 我从我的主 NSViewController 调用它,我可以免费控制窗
我是一名优秀的程序员,十分优秀!