Да, это вопрос, зависящий от платформы.
Если вы пишете консольную программу на POSIX, используйте API сигнала (#include & lt; signal.h & gt;).
В приложении WIN32 GUI вы должны обрабатывать сообщение WM_KEYDOWN.
После разговора об этом мы обнаружили две проблемы.
Первой проблемой был пропущенный reloadData
вызов, упомянутый выше. Это заставляло cellForRow
не называться. Добавление reloadData
исправило эту проблему, но тогда выходы пользовательского класса ячеек были равны нулю, что привело к сбою в setItemData
.
Вторая проблема заключалась в том, что в коде вызывался register(_:forCellReuseIdentifier:)
, но пользовательская ячейка уже была настроена как часть объявления Interface Builder UITableView
. Повторный вызов register
для пользовательского класса перерегистрирует reuseIdentifier
, отключая розетки, установленные в раскадровке.
Удаление вызова register
и добавление reloadData
решили все проблемы.
Вы никогда не звоните setupTableViews()
. Ваш код должен выглядеть следующим образом:
class NavigationViewController: UIViewController, SideMenuControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
setupTableViews()
}
func setupTableViews() {
menuTable.reloadData()
}
}
extension NavigationViewController: UITableViewDataSource, UITableViewDelegate {
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "SideMenuTableItem", for: indexPath as IndexPath) as! SideMenuTableItem
cell.setItemData(items[indexPath.row])
return cell
}
public func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
}
Вы никогда не вызываете функцию и не вызываете viewDidLoad. Это должно помочь. Кроме того, где находится остальная часть кода контроллера представления (это все? Не должно быть!).
Вам не нужно регистрировать свою ячейку, потому что вы запросили ее и убедитесь, что вы перезагрузили Data ().
Надеюсь, это поможет!