在沒有找到可行的解決方案的情況下搜索該主題。
我正在構建一個帶有多個故事板的會計應用程式。主要,客戶(客戶),發票(事實)...等。我可以通過單擊按鈕從主故事板轉到發票故事板的客戶沒問題...按鈕(主要SB)鏈接到客戶或發票故事板參考。
在客戶故事板中,我有一個 tableView,其中列出了該客戶的購買歷史記錄。我希望能夠在特定發票上雙擊,并在發票故事板中打開該發票。
雙 clic 部分作業正常,列印訊息作業......但程式在顯示訊息后崩潰:無法將型別“__NSCFBoolean”(0x7fffaab000c8)的值轉換為“__C.NSViewControllerPresentationAnimator”該代碼是從另一篇文章中獲取和改編的。我嘗試了不同的變體但沒有成功,即相同的錯誤訊息。
我沒有處理將發票編號從客戶 SB 轉移到發票 SB 的部分。我可能會使用 segue 轉移發票編號,并讓發票程式在加載后查看該變數是否為 nil
發票故事板檔案名:factures.storyboardfacture ViewController 類:FacturesVC ViewController storyboardID:facturesVC_id
@objc func tableViewDoubleClick(_ sender:AnyObject) {
if tableView.selectedRow >= 0 {
print ("VC545:", tableView.selectedRow)
//let storyboard = NSStoryboard(name: "factures", bundle: nil)
//let VC = storyboard.instantiateViewController(withIdentifier: "facturesVC_id") // give same error
let VC = NSStoryboard(name: "factures", bundle: nil).instantiateController(withIdentifier: "facturesVC_id") as! FacturesVC
self.present(VC as NSViewController, animator: true as! NSViewControllerPresentationAnimator)
}
}
uj5u.com熱心網友回復:
你的代碼沒有意義。
看起來您正在嘗試呼叫present(_:animator:)
. 如果您呼叫它,則需要將其傳遞給 animator(型別為 的物件NSViewControllerPresentationAnimator
。)
您的代碼不會創建NSViewControllerPresentationAnimator
.
以下是您需要如何更改它的概述:
let vc = NSStoryboard(name: "factures", bundle: nil).instantiateController(withIdentifier: "facturesVC_id") as! FacturesVC
let animator = // Code to create an NSViewControllerPresentationAnimator
self.present(vc, animator: animator)
我以前沒有和NSViewControllerPresentationAnimator
s 合作過。NSViewControllerPresentationAnimator
(這些天我主要使用 iOS。)如果您不確定如何繼續,您可能應該搜索教程。
uj5u.com熱心網友回復:
最后,我找到了我正在尋找的答案......這是代碼。
@objc func tableViewDoubleClick(_ sender:AnyObject) {
if tableView.selectedRow >= 0 {
let srow = tableView.selectedRow
//print ("VC551:", srow)
fact_nb = Int(fact_tbv[srow].id_f) ?? 0 // invoice nb that you want to segue
let storyboard = NSStoryboard(name: "factures", bundle: nil)
let VC = storyboard.instantiateController(withIdentifier: "facturesVC_id")
//self.presentAsSheet(VC as! NSViewController) work fine for sheet
// self.presentingViewController // data are laoded but nothing show up
// self.presentAsModalWindow(VC as! NSViewController) // OK for modal, cannot be resize , yellow button missing on bar
// self.present(VC as! NSViewController, animator: false as! NSViewControllerPresentationAnimator) // true or false... need a animator
let window = NSWindow(contentViewController: VC as! NSViewController)
window.center()
let windowController = NSWindowController(window: window)
windowController.showWindow(nil)
//see How to Perform Segue https://www.youtube.com/watch?v=JL0xuZ4TXrM
self.performSegue(withIdentifier: "gotofact", sender: nil) // segue identifier name : gotofact
}
}
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
let sb = segue.destinationController as! FacturesVC
print ("VC569:", fact_nb)
sb.factnb = fact_nb
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/442711.html