如果TableViewController的一个单元格被点击,打开一个ViewController



我试图以编程方式创建一个视图控制器,如果单击表上的单元格将被打开。我使用一个表格视图,我用一个xib填充它。所以,我被困在引用新视图控制器的点从第一个点击一个单元格创建在表格视图通过xib。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = storyboard?.instantiateViewController(withIdentifier: "DViewController") as? DViewController
self.navigationController?.present(vc!, animated: true, completion: nil) //present della view successiva
vc?.name = data[indexPath.row].nome

}

这段代码允许我单击行,但是当单击它时显示一个错误"致命错误:在展开可选值"时意外发现nil;显然是从self.navigationController?.present(vc!…vc值结果为nil,我不知道为什么。这是我想在点击时打开的视图控制器它要做的唯一一件事就是打开并将平铺改为我在另一个视图控制器中点击的单元格的名称

class DViewController: UITableViewController {
var name = ""
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.topItem?.title = "(name)"
}

}

有人能帮忙吗?我是swift的新手…ty

根据你所说的。你可以在没有strroyboard的情况下初始化你的viewController,这样就不会再崩溃了。

let vc = DViewController()

如果你像你那样呈现你的视图控制器,它不会显示你想要的标题。要显示标题,有两种方法:

用push样式显示你的新视图控制器:

let vc = DViewController() 
navigationController?.pushViewController(vc, animated: true)

继续使用呈现样式,但你需要将视图控制器包装在其他导航控制器中:

let vc = DViewController()
let nav = UINavigationController(rootViewController: vc)
navigationController?.present(nav, animated: true)

最新更新