2017-03-22 7 views
0

私は必要なinit(コーダーaDecoder:NSCoder)を持つviewcontrollerを持っています。他のクラスにインスタンスを作成したいです。ここに私のコードSwiftの他のViewControllerでviewcontrollerのインスタンスを作成できません

class ViewControllerB: UIViewController { 
@IBOutlet weak var tableview: UITableView! 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
}} 

は、私がViewControllerAにViewControllerBのインスタンスを作成したいです。

答えて

1

いくつか修正できます。

オプション1つの

let viewController = ViewControllerB(nibName: nil, bundle: nil) 

オプション2

は、以下のようなあなたのViewControllerBを変更します。

class ViewControllerB: UIViewController { 
    @IBOutlet weak var tableview: UITableView! 

    convenience init() { 
     self.init(nibName: nil, bundle: nil) 
    } 
} 

OR

class ViewControllerB: UIViewController { 
    @IBOutlet weak var tableview: UITableView! 

    required init(coder aDecoder: NSCoder) { 
     fatalError("This class does not support NSCoding") 
    } 
    override init (frame : CGRect) { 
     super.init(frame : frame) 
    } 
    convenience override init() { 
     self.init(frame:CGRectZero) 
    } 
} 

そして今、あなたはあなたの迅速な対応のための

let viewController = ViewControllerB() 
0

この

let viewController = ViewControllerB() 

のようにこれはViewControllerBのインスタンスを与え、その後、あなたがやりたいだろうか。

+0

おかげで、実際には初期化が必要であった(コーダaDecoder:NSCoder)を呼び出すことができますか?{ でsuper.init(コーダー:aDecoder) }}、あなたの答えは機能しません –

関連する問題