Swift 3:将indexPath传递到另一个类

Swift 3:将indexPath传递到另一个类,swift,swift3,uicollectionview,uicollectionviewcell,Swift,Swift3,Uicollectionview,Uicollectionviewcell,我有一个collectionView,它返回一个Post数组,[Post]。在collectionViews单元类(实际的posts)中,我有一个名为profileSegueContainer的视图。isUserInteractionEnabled当然设置为true,我有一个UITapgestureRecognitizer,当点击此视图时,它会运行一个函数。此函数仅显示另一个ViewController。当我点击profileSegueContainer时,我希望能够将post.uid传递到此V

我有一个collectionView,它返回一个Post数组,
[Post]
。在collectionViews单元类(实际的posts)中,我有一个名为
profileSegueContainer
的视图。isUserInteractionEnabled当然设置为true,我有一个
UITapgestureRecognitizer
,当点击此视图时,它会运行一个函数。此函数仅显示另一个ViewController。当我点击
profileSegueContainer
时,我希望能够将
post.uid
传递到此ViewController。我如何做到这一点?非常感谢。相关代码如下。任何建议都将不胜感激

class Post: NSObject {

    var author: String?
    var avatar_image_url: String?
    var likes: Int?
    var postImageUrl: String?
    var uid: String?
    var post_id: String?
    var hashtags: [String]?
}

class PostCell: BaseCell {

    var homeController: HomeController?

    lazy var profileSegueContainer: UIView = {
        let view = UIView()
        view.isUserInteractionEnabled = true
        return view
    }()

    override func setupViews() {
        super.setupViews()

        let tap = UITapGestureRecognizer(target: self, action: #selector(handleProfileSegue))
        profileSegueContainer.addGestureRecognizer(tap)

       topBar.addSubview(profileSegueContainer)
    }

    func handleProfileSegue() {
        let userProfileController = UserProfileController()
        let navigationUserProfileController = UINavigationController(rootViewController: userProfileController)
        homeController?.present(navigationUserProfileController, animated: true, completion: nil)
    }
}

希望我能正确理解你的问题。是否要将值传递到新的UserProfileController对象

向UserProfileController添加属性

class UserProfileController : UIViewController {
    public var postId : Int!
// more stuff ....
}
然后,您只需在创建对象后访问属性:

func handleProfileSegue(sender: UITapGestureRecognizer) {
  let userProfileController = UserProfileController()
    userProfileController.postId = 2345
    // more stuff...
}

如果这是你需要的,请告诉我。如果没有,我们将更新我们的帖子。

您可以使用自定义Tap类实现,请尝试以下代码导入UIKit类customTap:UIApgestureRecognitor{var objPost:Post!=nil}//使用LIKE:let Tap=customTap(目标:self,操作:#选择器(handleProfileSegue:))Tap.objPost=yourPostDataobject profileSegueContainer.AddgestureRecogniter(点击)@Jay Mahta谢谢你,这很重要。你能提供一个例子吗?我已经更新了我的评论。看一次。我不明白为什么我们需要通过UITapGestureRecognitizer传递任何东西。你的PostCell可能只有一个类范围内可用的postId属性。不幸的是,当我尝试在UserProfileController许可后打印postId时ds,它返回一个nil@Jimmy您是否能够在
setupview()
方法中打印
postId