提问者:小点点

为什么没有实例化UIViewController?[关闭]


我对这个代码有问题。

if let vc = storyboard?.instantiateViewController(withIdentifier: "profilevc") as? ProfileViewController {
            
            self.navigationController?.pushViewController(vc, animated: true)
        }

当单击tableView中的单元格时,应运行此代码。然而什么也没发生。据我所知,VCUIViewController根本没有创建。上面的代码放在这里。

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 letstoryboard之前的,但都不起作用。我在某处读到viewController需要在viewDidLoad()方法中才能创建,并尝试将其放在那里(没有成功,引发了一个致命错误)。

我能做什么?请帮帮忙。


共1个答案

匿名用户

确保为场景正确分配了情节提要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)