gpt4 book ai didi

ios - 如何从 UITableViewDelegate 的 didSelectRowtAtIndexPath 方法显示 UINavigationController?

转载 作者:行者123 更新时间:2023-11-30 13:13:58 25 4
gpt4 key购买 nike

当用户点击表格单元格时如何显示 UINavigationController?仅代码。

以下代码不起作用:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
guard let vm = (viewModel as? UICatalogVM)?.modelForRowAtIndexPath(indexPath) else {
return
}
let vc = ActivityIndicatorVC(viewModel: vm)
let nc = UINavigationController(rootViewController: self)
nc.pushViewController(vc, animated: true)
}

相反,这样的代码可以工作,但它将以模态方式显示 VC,这不是我想要做的。

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
guard let vm = (viewModel as? UICatalogVM)?.modelForRowAtIndexPath(indexPath) else {
return
}

let vc = ActivityIndicatorVC(viewModel: vm)
self.showViewController(vc, sender: self)
}

最佳答案

如果您当前的 View Controller 已经在导航 Controller 中,那么您可以直接执行以下操作:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
guard let vm = (viewModel as? UICatalogVM)?.modelForRowAtIndexPath(indexPath) else {
return
}
let vc = ActivityIndicatorVC(viewModel: vm)
navigationController.pushViewController(vc, animated: true)
}

否则,您必须在导航 Controller 中添加当前的 View Controller ,然后才能将其添加到前面。

例如,如果您使用 Storyboard 并且当前 View Controller 是初始 View Controller ,那么您必须添加 UINavigationController 作为初始 View Controller ,然后将当前 View Controller 设置为该导航 Controller 的 rootViewController然后您可以使用

轻松地在 didSelectRowAtIndexPath: 上推送新的 View Controller

navigationController.pushViewController(vc,动画:true)

关于ios - 如何从 UITableViewDelegate 的 didSelectRowtAtIndexPath 方法显示 UINavigationController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38428793/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com