2016-03-21 16 views
0

ich eine Funktion von meinem Class1.swift zuzugreifen versucheeine Funktion von anderen Swift-Klasse aufrufen

Hier ist meine Funktion in Class1.swift Class2.swift:

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

    } 
    } 

Und hier ist, wie ich nenne es in meinem Class2.swift:

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

Der Fehler, den ich in dieser Zeile erhalten ist: Missing argument for parameter 'coder' in call

+0

Sie sollten nicht auf View-Controller erstellen müssen die Fliege so. Vermutlich ist Class2 auch ein VC. Was sind diese beiden VCs und wie hängen sie zusammen? Wo ist dieser Code in Class2 (zB preparedForSegue?) – Michael

+0

'öffentliche Klasse FormPickerCell: FormValueCell, UIPickerViewDelegate, UIPickerViewDataSource {' Es ist eine benutzerdefinierte Picker-Klasse und kein View Controller –

+0

Also ich vermute, dass 'ExampleFormViewController' die aktuelle VC ist und Sie zeigen eine benutzerdefinierte Auswahl an. Entweder benötigt der Picker eine Referenz zurück zum VC, um diese Methode aufzurufen, oder die Methode kann statisch sein, wenn sie keine Instanzvariablen benötigt. – Michael

Antwort

0

Ihre init Methode für die Klasse erfordert einen Codierer parameter.You ein NSCoder müssen passieren, in einer Variablen theCoder genannt setzen und diese dann Ihren Anruf ändern:

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

Wie deklariere ich denCoder? –

+0

Wenn Sie nicht vorhaben, den Coder zu verwenden, sollten Sie die init-Methode wahrscheinlich nicht mit einem Coder als Parameter verwenden, versuchen Sie 'init() {' und die erste Zeile zu 'super.init()' Are you den NSCoder für nichts verwenden? – wottle

+0

Es wird von einer Bibliothek benötigt, die ich benutze. –

Verwandte Themen