UITableViewCell中的Swift UICollectionView indexPath错误

时间:2017-01-12 22:09:48

标签: swift uitableview swift3 uicollectionviewcell

我在表视图单元格中实现了一个集合视图单元格,但集合视图indexPath发生了奇怪的事情。

numberOfItemsinSection被触发3次,然后当numberOfitemsInSection为2时,cellForItemAt只触发一次。我期望集合视图有一个部分和2个单元格。

以下是源数据:

NavigationPage

以下是以下代码的控制台输出:

[["myDomain.jpg1", "myDomain.jpg2"]]

这是我的视图控制器:

"number of items in section: 2"
"number of items in section: 2"
"number of items in section: 2"
"cell for item at [0, 0]"
"indexPath.section: 0"    
"indexPath.row: 0"    
"myDomain.jpg1"

这是我的表格视图单元格:

class WishListsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

var tableView: UITableView = UITableView()

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.delegate      =   self

    tableView.dataSource    =   self

    tableView.register(WishListsCell.self, forCellReuseIdentifier: cellId)

    self.view.addSubview(tableView)
}

func numberOfSections(in tableView: UITableView) -> Int {
    return wishLists.count // 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{

    let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! WishListsCell

    return cell
}

2 个答案:

答案 0 :(得分:0)

我没有在WishListsCell扩展程序中看到numberOfSections(in collectionView)的实现。

根据您发布的代码段,我无法确定,但它可能看起来像。

func numberOfSections(in collectionView: UICollectionView) -> Int {
    return wishListUrls.count
}

答案 1 :(得分:0)

最终,主要问题是从5个Alamofire请求中加载我的数据,因为作为API的单个请求,我还无法获得主数据和详细信息。 tableView.reloadData()似乎反复触发,直到我在第一次Alamofire完成时明确触发它。当我将细节数据伪装成本地字典时,它似乎工作得更好。

除此之外,我实现了它Swift - how to open another viewcontroller with CollectionViewCell inside UITableViewCell

唯一的变化是我有多个部分,每个部分在我的表格单元格中有一行,所以我collectionView.tag使用indexPath.section而不是indexPath.row

我还使用了https://ashfurrow.com/blog/putting-a-uicollectionview-in-a-uitableviewcell-in-swift/

和这个

https://www.thorntech.com/2015/08/want-your-swift-app-to-scroll-in-two-directions-like-netflix-heres-how/