Tableview零,但存在故事板

问题描述:

我有视图控制器,它已连接到tableView。我提出控制器这样的:Tableview零,但存在故事板

(在以前的控制器):

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     let vc = DetailCharacterViewController() 
     let characterModel = (self.viewModel.arrValues[indexPath.row] as! CharacterListItem).correspondingCharacter 
     let vm = DetailCharacterViewModel(m: characterModel) 
     vc.viewModel = vm 
     self.navigationController?.pushViewController(vc, animated: true) 
     tableView.deselectRow(at: indexPath, animated: true) 
    } 

但是控制器出现时,它崩溃时尝试访问的tableView财产,那其实是:

@IBOutlet weak var tableView: UITableView! 

在调试我可以看到它是零。为什么?

+0

因为'let vc = DetailCharacterViewController()'不是调用ViewController“in/linked with”故事板,而是创建一个新的故事板,但不是故事板中的一个。 – Larme

+0

@Larme好吧,如何解决它? –

+0

'vc'应该由其故事板实例化;检查[这个答案](https://*.com/a/32139127/5501940)。 –

您可以使用segue和func prepare在viewControllers之间进行转换。 这里是Apple文档Make transition between view controllers