2017-05-03 9 views
0

おはよう、呼び出し外部関数が、値なし

は、私はこのクラスを持っている:

import Cocoa 

class PopOverDetails: NSViewController { 

    var dID = String() 

    @IBOutlet weak var txtEmail: NSTextField! 

    public func fillDetails (ID:NSManagedObjectID) { 

     print("=== fillDetails ===") 
     print(ID) 
     dID = "\(ID)" 

    } 


    override func viewDidLoad() { 
     print("=== viewDidLoad ===") 
     print(dID) 
    } 

} 

iは、アルが正常に動作しますが、問題

let Controller = PopOverDetails() 
Controller.fillDetails(ID: list[0].objectID) 

別のビューコントローラから関数を呼び出します私の関数fillDetailsに があると、私はView Controllerから "送信"するobjectIDの値を取得します。

しかし、viedidloadが空のため、この値では動作しません。 これは私の出力です:

=== fillDetails === 
0x40000b <x-coredata://7E006435-3E05-41F9-A3E4-CB8179A319A9/list/p1> 
=== viewDidLoad === 

私の間違いはどこですか?その後、PopOverDetailsで:)

UPDATE

let vcDetails = NSStoryboard(name: "Main", bundle: nil).instantiateController(withIdentifier: "PopoverDetails") as! NSViewController 
popover.contentViewController = vcDetails 
popover.show(relativeTo: tblView.rect(ofRow: tblView.selectedRow) , of: tblView, preferredEdge: .maxX) 
    } 
+0

にデフォルトの初期化子をその変数を取得することができますPopOverDetails() 'は、ストーリーボード/ xibのインスタンスではない**コントローラの新しいインスタンスを作成します。 'IBOutlet'のセグを使って実際の参照が必要です。 – vadian

答えて

0

まず宣言変数すなわち "ID"、

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 
let secondViewController = storyBoard.instantiateViewController(withIdentifier: "your_identifier") as! PopOverDetails 
secondViewController.id = list[0].objectID 
self.navigationController?.pushViewController(secondViewController, animated: true) 

今、あなたは `PopViewControllerのクラス

+0

しかし、それらの何も動作しません。おそらく私は間違っています。 私は最初の投稿を、最初のビュー・コントローラーからのポップオーバーを示すコードで更新しました – Stack108

関連する問題