Ich mache eine Mac-Anwendung, und ich habe ein Problem beim Anhängen von Text an eine NSScrollView, wenn ich eine Funktion aus einer anderen Klasse aufrufen.Text an NSScrollView anhängen - Thread 1: Schwerwiegender Fehler: Unerwartet gefunden Null beim Entpacken ein Optionaler Wert
Ich habe diese Funktion auf meinem Viewcontroller Klasse:
import Cocoa
class PopoverVC1: NSViewController {
let popover1 = NSPopover()
class func loadView() ->PopoverVC1 {
let vc = NSStoryboard(name: NSStoryboard.Name(rawValue: "Main"),
bundle: nil).instantiateController(withIdentifier:
NSStoryboard.SceneIdentifier(rawValue: "Popover1")) as! PopoverVC1
vc.popover1.contentViewController = vc
return vc
}
override func viewDidLoad() {
super.viewDidLoad()
popover1.behavior = .transient
popover1.contentViewController = self
}
func showPopover (view: NSView){
popover1.show(relativeTo: view.bounds, of: view, preferredEdge: .maxY)
}
@IBOutlet weak var radioOption1: NSButton!
@IBOutlet weak var radioOption2: NSButton!
@IBOutlet weak var radioOption3: NSButton!
@IBAction func clickOption(_ sender: NSButton) {
switch sender {
case radioOption1: popover1.performClose(sender)
case radioOption2: let vc = ViewController()
vc.myPrint(string: "This is a test")
default: print ("hello")
}
}
}
, als ich eine PopoverVC1 Klasse, die eine Klasse zu einem popover ist ich verwende:
import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var oneYes: NSButton!
@IBOutlet weak var oneNo: NSButton!
@IBOutlet weak var notesArea: NSScrollView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded
}
}
func myPrint (string: String){
let mystring = string
let myNotes = notesArea.documentView as? NSTextView
let text = myNotes?.textStorage!
let attr = NSAttributedString(string: mystring)
text?.append(attr)
}
let popover1 = NSPopover()
@IBAction func oneClicked(_ sender: NSButton) {
switch sender {
case oneYes: let vc = PopoverVC1.loadView()
vc.showPopover(view: sender)
case oneNo:
let myNotes = notesArea.documentView as? NSTextView
let text = myNotes?.textStorage!
let attr = NSAttributedString(string: "test")
text?.append(attr)
default: print ("")
}
}
}
Allerdings habe ich eine bekam Fehler wenn ich den Radiobutton "oneNo" drücke, sollte die Funktion "myPrint" aufrufen und das Argument übergeben.
Gewinde 1: Fatal error: gefunden unerwartet null, während ein optionaler Wert Abwickeln
ich einige Tests gemacht und als ich diese gleiche Funktion „MyPrint“ nennen, aus der ViewCotroller Klasse funktioniert es gut.
Irgendwelche Ideen?
Wo wird vc und notesArea erstellt? –
'notesArea' muss null sein, wenn Sie es verwenden. – Ryan
Hallo @Ryan, kannst du mir ein Beispiel geben? Ich bin neu zu swift :( – Caico