【发布时间】:2021-06-21 15:11:07
【问题描述】:
我有一个 xib,在我的 homeVC 中,我在 collectionView 的方法中的 didselectItem 中传递了一个 viewModel。之后,我正在导航 detailVC 并将我的委托分配给 self 那里,但我无法打印数据
HomeVC
protocol HomeViewControllerDelegate {
func didTappedIndex(viewModel: HomeCollectionViewCellViewModel)}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let game = games[indexPath.row]
self.delegate?.didTappedIndex(viewModel: HomeCollectionViewCellViewModel(with: game))
self.tabBarController?.navigationController?.pushViewController(DetailViewController(nibName: "DetailViewController", bundle: nil), animated: true)
}
DetailVC
class DetailViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
HomeViewController().delegate = self
}
}
扩展 DetailViewController: HomeViewControllerDelegate {
func didTappedIndex(viewModel: HomeCollectionViewCellViewModel) {
print(viewModel.title)
}
}
【问题讨论】:
-
HomeViewController().delegate = selfHomeViewController()是HomeViewController-.inti()的简短语法。因此,您正在创建HomeViewController的新实例,您没有将代理设置为您在屏幕上看到的那个,而是另一个(之后不再使用)。 -
@Larme 对不起,我听不懂你,所以在这种情况下我该怎么办
-
@matt 它准确地总结了我的情况,谢谢:)
标签: ios swift xcode delegates protocols