Mac 응용 프로그램을 수행하고 다른 클래스의 함수를 호출 할 때 NSScrollView에 텍스트를 추가하는 데 문제가 있습니다. 내가 사용하고 팝 오버에 클래스 인 PopoverVC1 클래스가보다NSScrollView에 텍스트 추가 - 치명적인 오류 : 선택적 값을 래핑하는 동안 예기치 않게 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