【发布时间】:2019-05-23 11:50:57
【问题描述】:
所以我在collectionview 中嵌入了tableview。 我有用于 tableview 的 xib。 当用户选择 tableview 的一个单元格时,我想导航到另一个视图控制器。
我试过这个方法,但它不起作用
let storyboardId = "Login"
let vc = storyboard?.instantiateViewController(withIdentifier: storyboardId)
navigationController?.pushViewController(vc!, animated: true)
但它不起作用,因为此视图控制器未添加到导航堆栈中。
class DetailCollectionViewCell: UICollectionViewCell, UITableViewDelegate,UITableViewDataSource {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// let navigationController = UINavigationController()
// let storyboardId = "Login"
// let vc = storyboard?.instantiateViewController(withIdentifier: storyboardId)
// navigationController?.pushViewController(vc!, animated: true)
}
}
我该如何解决这个问题。 任何帮助表示赞赏。
【问题讨论】:
-
为什么要创建与当前导航控制器无关的导航控制器,您可以将
navigationController?.pushViewController(vc!, animated: true)替换为self.navigationController.push... -
self.navigationController.pushViewController 也抛出错误。
-
好的。您需要从 CollectionView Cell -> ViewController 实现委托或协议,因为 DetailCollectionViewCell 不是视图控制器,因此您无法从那里推送或呈现视图控制器
-
@dahiya_boy 它是重复的,但你要回答的链接与这个不同
-
@PrashantTukadiya 首先 OP 必须设置导航控制器的根 VC。如果在窗口中创建了 NavController,那么他可以直接推送到下一个 VC。每一件事都是答案,那答案又有何不同?
标签: ios uitableview uinavigationcontroller swift4