2016-03-21 4 views
0
私は

他スウィフトクラス

をClass2.swiftために私Class1.swiftから機能にアクセスしようとしています

から関数を呼び出すと、ここでClass1.swiftの私の機能です:

class ExampleFormViewController: FormViewController { 
...... 
    required init(coder aDecoder: NSCoder) { 
      super.init(coder: aDecoder) 
      load_data() 
      self.loadForm() 
     } 
    func get_facility(company: Int!, territory: Int!){ 

    } 
    } 

そして、ここで私が呼ぶ方法ですそれは私のClass2.swiftに:

ExampleFormViewController().get_facility(ExampleFormViewController().val_company[row], territory: ExampleFormViewController().val_territory[row]) 

私は、この行で取得するエラーは、次のとおりです。Missing argument for parameter 'coder' in call

+0

あなたは上のView Controllerを作成する必要はありませんそのような飛行機。おそらくClass2もVCです。これらの2つのVCは何ですか?それらはどのように関連していますか? – Michael

+0

'public class FormPickerCell:FormValueCell、UIPickerViewDelegate、UIPickerViewDataSource {'これはビューコントローラではないカスタムピッカークラスです –

+0

だから、 'ExampleFormViewController'が現在のVCだと思いますカスタムピッカーを表示しています。ピッカーは、このメソッドを呼び出すためにVCへの参照を戻す必要があります。また、インスタンス変数を必要としない場合は、メソッドを静的にすることもできます。 – Michael

答えて

0

クラスのためのあなたのinit方法は、コーダparameter.Youが必要ですこれにあなたの呼び出しを変更、その後theCoderという変数に入れて、中に渡すNSCoderを必要と:

ExampleFormViewController().get_facility(ExampleFormViewController(theCoder).val_company[row], territory: ExampleFormViewController(theCoder).val_territory[row]) 
+0

Coderを宣言するにはどうすればよいですか? –

+0

コーダーを使用しない場合は、パラメータとしてコーダーを使用してinitメソッドを使用しないでください。 '必要なinit(){'を実行し、最初の行を 'super.init()'にしてください。何のためにNSCoderを使用していないのですか? – wottle

+0

私は使用しているLibaryが必要です。 –

関連する問題