这给了我一个非常艰难的时间。我试图从集合视图单元格到表格视图控制器。当我单击一个单元格(特别是一个单元格中的一个按钮)时,我应该能够切换到表格视图控制器,并在表格视图控制器的单元格中单击该单元格的详细信息。
在带有集合视图单元格的视图控制器中,我实现了一个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
}
表视图单元格中没有显示任何内容。我是新手,我一直在努力寻找解决方案,但我无法做到。
答案 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
。
如果您需要更多详细信息,请告诉我,我会将其添加到答案中。