2016-03-14 131 views
-1

我想实现一个delegate为了调用主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) 
     } 
    } 


} 

主视图控制器:

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