无法从 UITableViewCell 显示 viewcontroller
Can't show viewcontroller from UITableViewCell
基本上我在 tableviewcell 中有一个 CollectionView,这是我用来推送到另一个的方法 viewcontroller。
这是代码 :
class recipeRelated: UITableViewCell,UICollectionViewDelegate,UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let resultViewController = storyBoard.instantiateViewController(withIdentifier: "recipeContainerView") as! recipeContainerView
self.window?.rootViewController?.show(resultViewController,sender: self)
}
}
提前致谢!
使用这个扩展:
extension UIView {
var parentViewController: UIViewController? {
var parentResponder: UIResponder? = self
while parentResponder != nil {
parentResponder = parentResponder!.next
if let viewController = parentResponder as? UIViewController {
return viewController
}
}
return nil
}
}
这将使任何视图都可以访问它的第一个父控制器。所以你可以这样使用它:
self.parentViewController?.show(resultViewController, sender: self)
基本上我在 tableviewcell 中有一个 CollectionView,这是我用来推送到另一个的方法 viewcontroller。
这是代码 :
class recipeRelated: UITableViewCell,UICollectionViewDelegate,UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let resultViewController = storyBoard.instantiateViewController(withIdentifier: "recipeContainerView") as! recipeContainerView
self.window?.rootViewController?.show(resultViewController,sender: self)
}
}
提前致谢!
使用这个扩展:
extension UIView {
var parentViewController: UIViewController? {
var parentResponder: UIResponder? = self
while parentResponder != nil {
parentResponder = parentResponder!.next
if let viewController = parentResponder as? UIViewController {
return viewController
}
}
return nil
}
}
这将使任何视图都可以访问它的第一个父控制器。所以你可以这样使用它:
self.parentViewController?.show(resultViewController, sender: self)