TableViewController обнаруживает кран строки со статическими ячейками
Я использую TableViewController, который имеет таблицу с 2 секциями статических ячеек. Это встроено в контроллер вида. Я не могу получить didSelectRowAtIndexPath для запуска, когда я касаюсь ячеек. Я уже проверил всех обычных подозреваемых из этого вопроса, а также этого. Когда я пытаюсь с табличным представлением внутри viewcontroller с динамической таблицей, я могу заставить его работать просто отлично. Есть ли проблема с использованием TableViewController со статическими ячейками, которые не будут разрешить использование didSelectRowAtIndexPath?
Вот что у меня есть в пользовательском классе для TableViewController:
import UIKit
class OptionTableViewController: UITableViewController {
@IBOutlet var optionsTable: UITableView!
let numberOfRows = [7,2]
let cellIdentifier = "OptionCells"
override func viewDidLoad() {
super.viewDidLoad()
self.optionsTable.delegate = self
self.optionsTable.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 2
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
var rows = 0
if(section < numberOfRows.count){
rows = numberOfRows[section]
}
return rows
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
print("You selected cell #(indexPath.row)!")
}
}
Обновление: Я попытался заменить tableviewcontroller и viewcontroller, в который он был встроен, но мне все еще не удается запустить didSelectRowAtIndexPath.
Обновление 2: Кто-нибудь знает, возможно ли это в Swift 3? Я нашел рабочий пример использования Swift 2.2 с tableviewcontroller и статическими ячейками здесь. Может быть есть ошибка, делающая это с Swift 3?
2 ответа:
Вау, так получается, что didSelectRowAtIndexPath больше не корректен в Swift 3. Правильное использование теперь didSelectRowAt. Я нигде не видел этого упоминания, кромеэтого вопроса, на который я наткнулся.
Это:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print("You selected cell #\(indexPath.row)!") }
Не Это :
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){ print("You selected cell #\(indexPath.row)!") }