gpt4 book ai didi

ios - 如何从代表的 Collection View 单元格中获取 indexPath 项?

转载 作者:行者123 更新时间:2023-12-01 18:04:13 25 4
gpt4 key购买 nike

我有一个包含部分标题的 collectionView。在该部分的标题中,我添加了另一个 collectionView,它显示推荐的配置文件供用户关注,并且它水平滚动。

我无法从 ReuseableView(包含第二个 Collection View )推送 View Controller ,因此我创建了一个协议(protocol),该协议(protocol)将包含一个可以为我推送 View Controller 的函数。

当我点击个人资料(单元格)时,它会将我推送到我自己的个人资料。因为我抓不到indexPath.item那是在另一个collectionView中。

协议(protocol)

  • 在这里,我创建了包含 func HandleProfileTapped 的协议(protocol),名为 FeedReuseableView 的单元格是保存第二个 Collection View 的 sectionHeader 的名称。

  • protocol PeopleToFollowDelegate {
    func handleProfileTapped(for cell: FeedReusableView)
    }

    推送用户功能
  • 这是我在提要文件中创建的函数,我将在代理中将这个函数用于节标题。然而,这是我的问题开始的地方。

  •  // Create function to push users to the correct profile when selected
    func handleProfileTapped(for header: FeedReusableView) {

    print("profile tapped, push user to the correct profile page")
    let header = FeedReusableView()

    //try to grab the indexpath item so the corrext data is pushed
    let user = header.peopleToFollow // ??? What goes here? I cannot grab index path

    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)

    let profileViewController = storyBoard.instantiateViewController(withIdentifier: "profileViewController") as? ProfileViewController
    profileViewController?.user? = user


    self.navigationController?.pushViewController(profileViewController!, animated: true)

    }
  • 这是我遇到最大问题的地方,peopleToFollow = [User]()是用户将在部分标题中看到的推荐配置文件。 中频 Collection View 不在节标题中,然后我会像这样轻松获取 indexPath

  • // When profile is tapped, push user to userProfile
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    let user = peopleToFollow[indexPath.item]
    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    let profileViewController = storyBoard.instantiateViewController(withIdentifier: "profileViewController") as? ProfileViewController


    profileViewController?.user = user

    // Then push to next controller ( profile)


    }

    总而言之,我只需要一种方法来获取 indexPath.item 以某种方式用于该功能。

    编辑

    这也是我在 FeedReuseableView 中使用的功能
    var delegate: PeopleToFollowDelegate?

    func numberOfSections(in collectionView: UICollectionView) -> Int {
    return 1
    }

    // Return the number of profiles
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return peopleToFollow.count
    }

    //Display the recommended profiles
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "profilesCell", for: indexPath) as! PeopleToFollowCollectionCell

    cell.user = peopleToFollow[indexPath.item]

    return cell
    }

    // When profile is tapped, push user to userProfile
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    profilesTapped()

    }

    @objc func profilesTapped() {
    delegate?.handleProfileTapped(for: self)

    }


    最佳答案

    您可以从更改 didSelectRow 的实现

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    profilesTapped()
    }


    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    profilesTapped(user: peopleToFollow[indexPath.item])
    }

    这里是profilesTapped的实现
    @objc func profilesTapped(user: User) {
    delegate?.handleProfileTapped(for: user)
    }

    编辑:
    对于推送 View Controller ,您应该这样做。如果我现在使用手机时输入错误,请道歉。
    func handleProfileTapped(for user: User) {
    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)

    if let profileViewController = storyBoard.instantiateViewController(withIdentifier: "profileViewController") as? ProfileViewController {
    profileViewController.user = user
    self.navigationController?.pushViewController(profileViewController, animated: true)

    }

    关于ios - 如何从代表的 Collection View 单元格中获取 indexPath 项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58108705/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com