Macアプリケーションを実行していて、別のクラスの関数を呼び出すときにNSScrollViewにテキストを追加するときに問題があります。私は私が使用していますポップオーバーのクラスであるPopoverVC1クラス、持っているよりもNSScrollViewにテキストを追加する - スレッド1:致命的なエラー:オプション値のアンラッピング中に予期せずnilが見つかりました
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")
}
}
}
:しかし
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 ("")
}
}
}
を、私が得た
私は私のViewControllerクラスでこの機能を持っています"myPrint"という関数を呼び出すラジオボタン "oneNo"を押して引数を渡すとエラーが発生します。
スレッド1:致命的なエラー:
オプションの値をアンラップしながら、意外なことに、私はいくつかのテストを行なったし、私はViewCotrollerクラス内から「myPrint」この同じ関数を呼び出すとき、それは正常に動作nilを発見しました。
アイデア?
vcとnotesAreaはどこに作成されていますか? –
'notesArea'は、使用するときにはnilでなければなりません。 – Ryan
こんにちは@ライアン、私に例を教えていただけますか?私は素早く動いています:( – Caico