2016-03-14 2 views
-1

Я пытаюсь реализовать delegate для вызова событий в main viewController.Swift 2 - делегат протокола, который не называется

Когда я пытаюсь вызвать делегат в main view controller я получаю ошибку:

Instance member 'delegate' cannot be used on type 'CustomPickerViewController'

Что я здесь отсутствует?

В моем файле делегата у меня есть:

protocol CustomPickerViewControllerDelegate: class { 
    func CustomPickerDidSelectRow(sender:CustomPickerViewController) 
} 

//MARK: The Main Class 
public class CustomPickerViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 

// DELEGATE 
    weak var delegate: CustomPickerViewControllerDelegate? 

override public func viewDidLoad() { 
     super.viewDidLoad() 

     customPicker.delegate = self 
     customPicker.dataSource = self 

..... 
    } 

public func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 

     if component == 0 { 

     }else { 

     customLabel.text = arrayCustom[row] 
     self.delegate?.CustomPickerDidSelectRow(self) 
     } 
    } 


} 

Главная View Controller:

class ViewController: UIViewController, CustomPickerViewControllerDelegate { 

override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 

     CustomPickerViewController.delegate = self // ERROR 

    } 

func CustomPickerDidSelectRow(sender: CustomPickerViewController) { 
     print("ok") 
    } 

} 

ответ

0

Вы можете просто присвоить, как вы делали с CustomPickerViewController. Вам нужно создать новый объект для этого вида контроллера, а затем назначить делегат,

Для например:

let customPickerVC = CustomPickerViewController() 
customPickerVC.delegate = self 
+0

Благодаря сделал это, и я добавил 'viewController.presentViewController' теперь работает – SNos

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