2016-03-21 3 views
0

Я пытаюсь получить доступ к функции из моего Class1.swift в Class2.swiftВызов функции из другого класса 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

Вам не нужно создавать контроллеры просматривать на так летать. Предположительно Class2 также является VC. Каковы эти два VC и как они соотносятся? Где этот код в Class2 (например, prepareForSegue?) – Michael

+0

'public class FormPickerCell: FormValueCell, UIPickerViewDelegate, UIPickerViewDataSource {' Это настраиваемый класс выбора, а не контроллер View –

+0

Так что я предполагаю, что 'ExampleFormViewController' является текущим VC , и вы показываете пользовательский подборщик. Либо сборщику нужна ссылка обратно на VC для вызова этого метода, либо метод может быть статическим, если он не требует каких-либо переменных экземпляра. – Michael

ответ

0

Ваш метод init для класса требует кодер parameter.You нужен NSCoder пройти в, положить в переменную с именем theCoder, а затем изменить свой вызов к этому:

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

Как объявить Кодер? –

+0

Если вы не планируете использовать кодер, вы, вероятно, не должны использовать метод init с кодером в качестве параметра, попробуйте 'required init() {' и первую строку 'super.init()' Вы не использовать NSCoder для чего-нибудь? – wottle

+0

Требуется, чтобы я использовал Libary. –

Смежные вопросы