gpt4 book ai didi

swift - UICollectionView 未在 UITableViewCell 内部更新

转载 作者:搜寻专家 更新时间:2023-11-01 06:42:15 25 4
gpt4 key购买 nike

我正在构建一个 tvos 应用程序。目前我遇到了一个问题,我有一个 UITableView。我的 UITableView 有两个部分,每个部分只有一行。在这两行中,我都有一个水平滚动的 UICollectionView。在每个 UICollectionViewCell 中都有一个 imageView 用于显示一些图像。这是我正在设置的图像。 StoryBoard

我已经为 UITableViewCells 设置了单独的重用标识符。但是我对 UICollectionViewCells 有相同的重用标识符。

现在我正在从网络上获取数据。一开始没有数据,所以 UITableViewUICollectionViews 是空的。一旦数据可用,我就会调用 tableView.reloadData(),但调用此函数不会将新信息带到 Collection View 中。谁能指导我如何使它正常工作。

这是我的自定义 UITableviewCell 类的代码。

import UIKit

class UIScrollingTableViewCell : UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegate {


@IBOutlet weak var myCollectionView: UICollectionView!


//MARK: CollectionViewDelegate & DataSource

func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
print("numberOfSectionsInCollectionView ")
return 1
}


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

if self.reuseIdentifier == recentlyWatchCellId {
return DataManager.sharedInstance.recentlyWatched.count
} else{
return DataManager.sharedInstance.recentlyAdded.count;
}

}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

let cell = collectionView.dequeueReusableCellWithReuseIdentifier("smallCollectionViewCell", forIndexPath: indexPath) as! MyCollectionViewCell
var lesson = DataManager.sharedInstance.recentlyWatched[indexPath.row]
if self.reuseIdentifier == recentlyAddedCellId {
lesson = DataManager.sharedInstance.recentlyAdded[indexPath.row]
}

if let url = lesson.instructorImageUrl {
cell.imageView.sd_setImageWithURL(NSURL(string: url), placeholderImage: UIImage(named: "categoryLessons"))
}
return cell
}


//MARK: Focus
override func canBecomeFocused() -> Bool {
return false
}


}

这里是我的 UIViewController 的一些代码,它有我的 tableView 的数据源方法。 tableview 是一个@IBOutlet

//MARK: UITAbleViewDelegate & UITableViewDatasource

func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
switch section {
case RecentLessonSection.Recorded.rawValue:
return NSLocalizedString("Recently Added", comment: "Recently Added")

case RecentLessonSection.Watched.rawValue:
return NSLocalizedString("Recently Viewed", comment: "Recently Viewed")
default:
return ""
}
}


func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 2;
//return RecentLessonSection.Max.rawValue
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell : UIScrollingTableViewCell
switch indexPath.section {
case RecentLessonSection.Recorded.rawValue:
cell = tableView.dequeueReusableCellWithIdentifier(recentlyAddedCellId, forIndexPath: indexPath) as! UIScrollingTableViewCell

case RecentLessonSection.Watched.rawValue:
cell = tableView.dequeueReusableCellWithIdentifier(recentlyWatchCellId, forIndexPath: indexPath) as! UIScrollingTableViewCell
default:
cell = tableView.dequeueReusableCellWithIdentifier(recentlyWatchCellId, forIndexPath: indexPath) as! UIScrollingTableViewCell


}


return cell
}

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



//MARK : Notification Handlers
func receivedNewData() {
self.tableView.reloadData()

}

最佳答案

在您提供的代码中,我可以看到您仅为根 TableView 调用了 reloadData()。但是如果你想更新一个 Collection View ,你还应该为包含一个 Collection View 的每一行调用 reloadData()。例如,您可以在方法 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 中完成。将 cell.myCollectionView.reloadData() 行添加到此方法的末尾,我希望它对您有用。

关于swift - UICollectionView 未在 UITableViewCell 内部更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33756419/

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