Ваш UITableView
является UIView
, поэтому он не является UIViewController
и не имеет UINavigationController
.
Вы должны создать delegate
в вашем UITableView
, который будет реализован вашим UIViewController
.
Примерно так:
protocol MyTableViewDelegate: class {
func didSelectRow(url: String, titleText: String)
}
Добавьте переменную делегата в табличное представление, например:
weak var delegate: MyTableViewDelegate?
, и вызовите свой делегат следующим образом:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let actionType = AppData?.items?[indexPath.row].actionType
switch actionType {
case 5:
print(actionType ?? 0)
let urlLink = AppData?.items?[indexPath.row].actionUrl
let titleText = AppData?.items?[indexPath.row].textValue
self.delegate.didSelectRow(url: url, titleText: titleText)
default:
print(actionType ?? 0)
}
}
В вашем контроллере представления:
вы должны добавить пользовательский класс табличного представления в ваш ViewController,
, а затем добавить делегата: yourTableView.delegate = self
делегат для реализации:
extension MyViewController: MyTableViewDelegate {
func didSelectRow(url: String, titleText: String) {
let vc = storyboard.instantiateViewController(withIdentifier: "WebViewController") as! WebViewController
vc.url = urlLink
vc.titleText = titleText
self.navigationController.pushViewController(vc, animated: true)
}
}