从集合视图单元格到表格视图单元格

时间:2017-05-14 04:42:30

标签: swift uitableview firebase-realtime-database uicollectionview

这给了我一个非常艰难的时间。我试图从集合视图单元格到表格视图控制器。当我单击一个单元格(特别是一个单元格中的一个按钮)时,我应该能够切换到表格视图控制器,并在表格视图控制器的单元格中单击该单元格的详细信息。

在带有集合视图单元格的视图控制器中,我实现了一个segue。

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {       
        }
        override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
            if segue.identifier == "details" {
    if segue.identifier == "UsersProfile" {

                if let indexPath = sender as? IndexPath{
                    let vc = segue.destination as! UsersProfileViewController
                    let post = self.posts[indexPath.row] as! [String: AnyObject]
                    let posted = self.posts[indexPath.row] as! [NSMutableArray: AnyObject]
                    let username = post["username"] as? String
                    let userpicuid = post["uid"] as? String
                    let userpostuid = posted["uid"] as? NSMutableArray
                    vc.username = username
                    vc.userpicuid = userpicuid
                    vc.posts = userpostuid
                     print(indexPath.row)
                }
            }}

当我离开时,userpic和用户名显示在详细的表格视图中,但是在表格视图单元格中没有查看它们。这是我的表视图控制器代码:

     var posts = NSMutableArray()
 @IBOutlet var TableView: UITableView!

     func numberOfSections(in tableView: UITableView) -> Int {
            // #warning Incomplete implementation, return the number of sections
            return 1
        }

        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
                return self.posts.count

              }
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCell(withIdentifier: "UsersCell", for: indexPath) as! UserProfileTableViewCell

            //Configure the cell


            print(posts[indexPath.row])
            let post = self.posts[indexPath.row] as! [String: AnyObject]
            cell.Title.text = post["title"] as? String
            cell.Author.text = post["Author"] as? String
            cell.Price.text = post["Price"] as? String

            if let imageName = post["image"] as? String {

                let imageRef = FIRStorage.storage().reference().child("images/\(imageName)")


                imageRef.data(withMaxSize: 25 * 1024 * 1024, completion: { (data, error) -> Void in
                    if error == nil {


                    }else {

                        print("Error downloading image:" )
                    }})}

            return cell
            }

表视图单元格中没有显示任何内容。我是新手,我一直在努力寻找解决方案,但我无法做到。

下面是我的数据库的图片: enter image description here

2 个答案:

答案 0 :(得分:1)

您是否已将tableview的Delegate和Datasource添加到类中?

答案 1 :(得分:0)

我创建了一个示例,当用户点按tableViewController时,会将您导航到UICollectionViewCell

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

// Change it with your required items.
return 10
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "YOUR_CELL_IDENTIFIER", for: indexPath as IndexPath)

// Do not forgot to set cell tag.
cell.tag = indexPath.row//cell tag has been set to indexpath.row

return cell
}

要导航到您提到的tableViewController工具PrepareForSegue,如下所述。

override func prepare(for segue: UIStoryboardSegue, sender: Any!) {

if segue.identifier == "UsersProfile" {

// Use this tag to pass data for the selected cell
//this tag will act as indexpath.row

guard let tag = (sender as? UIView)?.tag
else {
 return
}

// add the data you want to parse here.
print(tag)
}
}

注意:请确保您已将故事板文件中的segue从UICollectionViewCell设置为UITableViewController

如果您需要更多详细信息,请告诉我,我会将其添加到答案中。