pickerview example data ios xcode swift uipickerviewcontroller uipickerviewdatasource

ios - example - El tipo "myViewController" no cumple con el protocolo UIPIckerDataSource en Swift



uipickerview swift 4 example (5)

Fix-it en XCode 8.1 inserta una versión obsoleta del siguiente método si está utilizando Swift 3:

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { return componentNumber }

En XCode 10.0+

func numberOfComponents(in pickerView: UIPickerView) -> Int { return componentNumber }

Acabo de crear una nueva clase en Swift, se llama myViewController y es un UIViewController . Ahora estoy intentando convertirlo en un UIPickerViewDelegate y DataSource pero tengo un error extraño

import UIKit class myViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { ... }

Dice que el Type "myViewController" does not conform to protocol UIPIckerDataSource sobre UIPickerViewDataSource.

¿Es un error de Xcode-Beta 3?


Implementar el método requerido de UIPickerDataSource como en la documentación.

La fuente de datos proporciona a la vista del selector el número de componentes y el número de filas en cada componente para mostrar los datos de la vista del selector. Se requieren ambos métodos en este protocolo.

Así que necesitas implementar estos métodos.

func numberOfComponentsInPickerView(_ pickerView: UIPickerView!) -> Int {} func pickerView(_ pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int{}


Mi problema es que el nombre del método del protocolo es ilegal,

@protocol ContactsSelectDelegate <NSObject> - (void)selectContacts:(NSMutableArray *)contacts Tags:(NSMutableArray *)tags; @end

Aquí, las Tags: deben ser tags:
Espero que mi respuesta sea de ayuda.


Mi problema fue que tuve una override frente a la función de implementación, donde Swift no considera que las implementaciones de los métodos de protocolo sean anulaciones (las same ). Simplemente sacando la palabra clave override solucionó el problema.


UIPickerViewDataSource implementar todos los métodos requeridos de UIPickerViewDataSource y UIPickerViewDelegate , si desea cumplir con estos protocolos.

Swift es más como java cuando se trata de protocolos porque si no implementa todos los métodos requeridos declarados por un protocolo, obtendrá un error de tiempo de compilación en lugar de una excepción de tiempo de ejecución.