swift uitableview swift3 ios10 xcode8

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?