如何通过点击表格视图单元格来转换到视图控制器?我目前的结构是:
我使用navigation controller
作为浏览我的app atm的唯一方式。
我使用类型view models
的{{1}}来表示单个单元格。这些视图模型符合自定义协议,该协议由我调用struct
的方法组成。
我的问题是:
如何使用我的cellSelected
功能点按单元格,转换为view controller
?这可能吗?
自定义协议:
cellSelected
视图模型的示例:
protocol CellRepresentable
{
var reuseIdentier: String { get }
func registerCell(tableView: UITableView)
func cellInstance(of tableView: UITableView, for indexPath: IndexPath) -> UITableViewCell
func cellSelected()
}
答案 0 :(得分:1)
我猜你有几个选项,你可以将导航控制器的引用传递给视图模型,或者你可以定义一个在struct ProfileNameViewModel {
private let navigationController: UINavigationController
init(withNavigationController navigationController: UINavigationController) {
self.navigationController = navigationController
}
func cellSelected() {
navigationController.pushViewController(...)
}
}
上执行的闭包。
选项1:
struct ProfileNameViewModel {
private let selectedAction: () -> Void
init(withSelectedAction selectedAction: @escaping () -> Void) {
self.selectedAction = selectedAction
}
func cellSelected() {
selectedAction()
}
}
选项2:
let vm = ProfileNameViewModel(withSelectedAction: { [weak self] in
self?.navigationContoller?.pushViewController(...)
})
并在您的视图控制器上:
UIAccessibility
答案 1 :(得分:0)
1-转到Storyboard,单击viewController并在xcode左侧的Utility Area中,给它一个storyboard标识符。
2-返回您的代码并在cellSelected()
假设您的viewController被称为MusicListVC
func cellSelected() {
if let viewController = storyboard?.instantiateViewController(withIdentifier: "your Identifier") as? MusicListVC
{
navigationController?.pushViewController(viewController , animated: true)
}
}