我正在嘗試開發一款應用程序,該應用程序包含一個StoryBoard,其中包含一個用於記錄應用程序事件和用戶反饋的NSTextView。我從主視圖中的複選框切換加載視圖(控制檯日誌視圖在應用程序啓動時默認打開)。所有這些都可以在應用程序啓動時正常工作,第二個視圖可以像viewDidLoad()函數一樣處理文本。NSTextView/NSViewController NSNotification用於SWIFT中的MacOS應用程序的控制檯日誌功能
爲控制檯日誌視圖的NSViewController類是:
class ConsoleLogViewController: NSViewController,NSTextViewDelegate {
@IBOutlet var textViewConsoleLog: NSTextView!
override func viewWillDisappear() {
(representedObject as! NSButton).isEnabled = true
(representedObject as! NSButton).state = NSOffState
}
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
textViewConsoleLog.delegate = self
textViewConsoleLog.string = "All new journal events are logged to this window"
textViewConsoleLog.string?.append("\n")
textViewConsoleLog.string?.append("*********************************************")
textViewConsoleLog.string?.append("\n")
textViewConsoleLog.string?.append("\n")
} // END OF viewDidLoad()
func addLogToConsoleWindow(newLogEntry: String) {
textViewConsoleLog.string? = (newLogEntry)
textViewConsoleLog.string?.append("\n")
} // END OF addLogToConsoleWindow()
} // ConsoleLogViewController
OF END的視圖是從主視圖控制器(下圖中命名爲 '控制')啓動使用以下函數調用:
func showConsoleLogView() {
let buttonCall = chkBoxConsoleLog
performSegue(withIdentifier: "sequeConsoleView", sender: buttonCall)
} // END OF showConsoleLogView()
在主視圖控制器中,我創建一個ConsoleLogViewController實例,然後嘗試使用函數addLogToConsoleWindow將附加日誌信息附加到textViewConsoleLog。代碼在主視圖控制器相關的片段是:
let consoleOutputPrintStatement = ConsoleLogViewController() // Create an instance of ConsoleLogViewController to allow logging to the new console window
和
consoleOutputPrintStatement.addLogToConsoleWindow(newLogEntry: "Loading journal files")
然而,當我運行的應用程序,並嘗試寫附加文本行,我收到了fatal error: unexpectedly found nil while unwrapping an Optional value
。很顯然,textViewConsoleLog對象爲零,並且正在創建錯誤。
我認爲問題在於我正在創建該類的另一個實例,因此我試圖將附加文本附加到尚未啓動的textViewConsoleLog對象(或類似的東西!)。
該應用程序是這樣的,當它第一次運行:
所以 - 我只是標題下錯了路試圖建立一個日誌記錄功能,使用NSTextView控制檯?或者我關閉了,但需要與NSTextView不同的方法才能使它工作?如何使用其他viewControllers生成的相關字符串更新NSTextField中的文本?
任何援助或指導高度讚賞。
標題是關於'NSTextView'和日誌。問題是關於'NSViewController'。改變標題以吸引'NSViewController'專家。 – Willeke
'我正在創建班級的另一個實例'呃,我錯過了那個部分。這很可能是問題的原因,是的。在這個新實例中,網點與任何事物都沒有關聯。 – Moritz
是Eric - 但是,我如何寫入由segue創建的實例?作爲一個新手,我很困惑/不確定如何解決這個問題。 – Wolfstar