我对这个代码有问题。
if let vc = storyboard?.instantiateViewController(withIdentifier: "profilevc") as? ProfileViewController {
self.navigationController?.pushViewController(vc, animated: true)
}
当单击tableView中的单元格时,应运行此代码。然而什么也没发生。据我所知,VC
UIViewController根本没有创建。上面的代码放在这里。
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let user = users[indexPath.row]
if let vc = storyboard?.instantiateViewController(withIdentifier: "profilevc") as? ProfileViewController {
vc.user = user
self.navigationController?.pushViewController(vc, animated: true)
}
}
}
ProfileViewController类型是这样定义的。
import UIKit
class ProfileViewController: UIViewController {
var user: User!
override func viewDidLoad() {
super.viewDidLoad()
self.title = user.fullName
}
}
我甚至尝试在if let
之前添加let storyboard=UIStoryboard(名称:“main”,bundle:nil)
并删除if let
中storyboard
之前的?
,但都不起作用。我在某处读到viewController需要在viewDidLoad()
方法中才能创建,并尝试将其放在那里(没有成功,引发了一个致命错误)。
我能做什么?请帮帮忙。
确保为场景正确分配了情节提要ID和类。
使用代码
// Make sure your storyboard name is correct in my case its "Main"
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let vc = storyBoard.instantiateViewController(withIdentifier: "profilevc") as! ProfileViewController
self.navigationController?.pushViewController(vc, animated: true)