異なるデリゲート/データソースを持つ2つの異なるUIPickerViewを作成する方法を教えてください。私は2つのセルを持つTableViewを持って、私はUIPickerViewと2つの異なるUIAlertControllerを開く必要があります。私のコード:異なるUIPickerViewデリゲート/データソースUIAlertController
private weak var filterController: UIAlertController! {
let controllerConfig = UIAlertController(title: "", message: "\n\n\n\n\n\n\n\n\n", preferredStyle: .Alert)
controllerConfig.modalInPopover = true
//Create UIPickerView
let pickerFrame = CGRectMake(0, 20, 270, 180)
let picker = UIPickerView(frame: pickerFrame)
//Picker Color
picker.backgroundColor = controllerConfig.view.backgroundColor
//Picker Delegate/DataSource
picker.delegate = self
picker.dataSource = self
//Add Picker
controllerConfig.view.addSubview(picker)
//Create header frame
let headerFrame = CGRectMake(0, 5, 270, 45)
let headerView = UIView(frame: headerFrame)
headerView.backgroundColor = controllerConfig.view.backgroundColor
//Create 'Close' button
var closeButton: UIButton! {
let buttonFrame = CGRectMake(230, 5, 35, 35)
let buttonConfig = UIButton(frame: buttonFrame)
buttonConfig.setTitle("X", forState: .Normal)
//Set color on text
buttonConfig.setTitleColor(UIColor.grayColor(), forState: .Normal)
buttonConfig.setTitleColor(erablagoThemeColor, forState: .Highlighted)
buttonConfig.addTarget(self, action: #selector(didClickOnCloseButton), forControlEvents: .TouchUpInside)
return buttonConfig
}
let showAction = UIAlertAction(title: "Select", style: .Default) { (action) in
//TODO
}
//Add subview
headerView.addSubview(closeButton)
controllerConfig.addAction(showAction)
controllerConfig.view.addSubview(headerView)
return controllerConfig
}
///Close current view
func didClickOnCloseButton() {
dismissViewControllerAnimated(true, completion: nil)
}
そして私は実装UIPickerViewDelegateとUIPickerViewDataSourceを持っています。 ViewContrillerでこの実装を変更する必要があります。
//MARK: - UIPickerViewDataSource
extension FilterController: UIPickerViewDataSource {
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return 2
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
switch row {
case 0:
return "All"
case 1:
return "Cars and Bicycles"
default:
return nil
}
}
}
私はUIAlertControllerでクラスを作成し、私のViewControllerで彼を呼び出す必要があることができますか?知りません。ありがとうございます:
フム、私は新しいデリゲートクラスを作成することができます。それは私を助けるかもしれない。 –