swift - El método de fuente de datos Swable 3 UITableView viewForHeaderInSection muestra una advertencia
swift3 ios10 (1)
Después de la migración a Swift 3 tengo el siguiente método:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {}
Y me da la advertencia.
Método de instancia ''tableView (tableView: viewForHeaderInSection :)'' casi coincide con el requisito opcional ''tableView (_: titleForHeaderInSection :)'' del protocolo ''UITableViewDataSource''
Fix-it ofrece hacer que el método sea privado o agregar una anotación "nonobjc". ¿Cómo resolver la advertencia?
Tuve advertencias similares en toda mi aplicación. Había 2 problemas en realidad. Arreglé todas las advertencias ya sea agregando el guión bajo a la firma del método o moviendo el método a la extensión correcta que implementa el protocolo de donde proviene el método.
Creo que tu problema podría ser la combinación de ambos.
Con más detalle:
1) Podría olvidarse de agregar el carácter "subrayado" antes de "tableView: ...", lo que lo convierte en un método diferente en Swift 3 (en Swift 2.3 no importa). Así que deberías cambiar esto:
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
a esto:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
2) El método tableView(_:viewForHeaderInSection:)
es del protocolo UITableViewDelegate
, pero parece que el compilador no conoce este método; solo conoce los métodos de UITableViewDataSource
y trata de recomendarle uno ( tableView(_:titleForHeaderInSection:)
). Entonces, ¿no implementas UITableViewDelegate
o lo haces, pero quizás en otra extensión?