gpt4 book ai didi

ios - 如何在 iOS Swift 中设置特定索引的 Collection View 单元格?

转载 作者:行者123 更新时间:2023-11-28 11:54:25 27 4
gpt4 key购买 nike

在个人资料屏幕中,从 firestore 中检索用户名、电子邮件 ID、汽车类别的数据。这里的汽车类别是紧凑型、小型、中型和全型。并将 carCategory 参数值存储为字符串(即:CarCategory: "1"表示汽车类别"0" 那么它的紧凑型汽车 如果 < strong>car category value is "1" then its small).

在用户更新页面中,car category是collection view flow layout是carousel view
如果汽车类别单元格索引路径值为 1,则无需滚动即可显示单元格详细信息。

这是我排除的屏幕截图:enter image description here

我的问题是如何在 Collection View 单元格中加载特定的单元格索引。

这是我到目前为止尝试过的代码::

   **collection view and carousel view**

var car = [String]()
var carCategory = [ "Compact","small", "Midsize", "Full", "Van/Pick-up" ]
var carCategoryImage = ["compactCar", "smallCar", "mediumCar", "fullCar", "vanPickup"]
var carCategoryMeter = ["3.5 - 4.5m", "2.5 - 3.5m", "4 - 5m", "5 - 5.5m", "5.5 - 6.5m"]

var carCategoryLabel: UILabel?
var carMetersLabel: UILabel?
var carCategoryImageLabel: UIImageView?
var currentPageValue: String?
var currentCell: Int?

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

return carCategory.count

}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! carCollectionSettingCollectionViewCell

cell.carName.text = carCategory[indexPath.row]
print("carcategoryIndex\(carCategory)")
cell.carImage.image = UIImage(named: carCategoryImage[indexPath.row])
cell.carMeters.text = carCategoryMeter[indexPath.row]




return cell
}


fileprivate var pageSize: CGSize {
let layout = self.carCollection.collectionViewLayout as! UPCarouselFlowLayout
var pageSize = layout.itemSize
if layout.scrollDirection == .horizontal {
pageSize.width += layout.minimumLineSpacing
} else {
pageSize.height += layout.minimumLineSpacing
}
return pageSize
}

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let layout = carCollection.collectionViewLayout as! UPCarouselFlowLayout
let pageSide = (layout.scrollDirection == .horizontal) ? self.pageSize.width : self.pageSize.height
let offset = (layout.scrollDirection == .horizontal) ? scrollView.contentOffset.x : scrollView.contentOffset.y
currentPage = Int(floor((offset - pageSide / 2) / pageSide) + 1)
print("currentpage::::\(currentPage)")


}

fileprivate var currentPage: Int! {
didSet {

currentPage = self.currentCell
print("currentapge::::\(currentPage)")

let character = self.carCategory[self.currentPage!]
print("character::::\(character)")

}
}

func loadUserData(){


API.User.observeCurrentUser { (user) in

if self.userName.text != nil {
self.userName.text = user.username
print("username:::\(String(describing: user.username))")
}
if let photoUrlString = user.profileImageURL {
let photoUrl = URL(string: photoUrlString)
self.profileImage.sd_setImage(with: photoUrl)
}

if self.email.text != nil {

self.email.text = user.email


}





switch user.carCategory {

case "0":

self.carCategoryLabel?.text = "Compact"
self.carMetersLabel?.text = "3.5 - 4.5m"
self.carCategoryImageLabel?.image = UIImage(named: "compactCar")
self.currentCell = 0
print("currentCell:::\(String(describing: self.currentCell))")
self.carCollection.reloadData()

case "1":

self.carCategoryLabel?.text = "Small"
self.carMetersLabel?.text = "2.5 - 3.5m"
self.carCategoryImageLabel?.image = UIImage(named: "smallCar")
self.carCategoryLabel?.text = "1"
self.currentCell = 1
print("currentCell:::\(String(describing: self.currentCell))")
self.carCollection.reloadData()


case "2":

self.carCategoryLabel?.text = "Midsize"
self.carMetersLabel?.text = "4 - 5m"
self.carCategoryImageLabel?.image = UIImage(named: "mediumCar")
self.currentCell = 2
print("currentCell:::\(String(describing: self.currentCell))")
self.carCollection.reloadData()
case "3":

self.carCategoryLabel?.text = "Full"
self.carMetersLabel?.text = "5 - 5.5m"
self.carCategoryImageLabel?.image = UIImage(named: "fullCar")
self.currentCell = 3
print("currentCell:::\(String(describing: self.currentCell))")
self.carCollection.reloadData()

case "4":

self.carCategoryLabel?.text = "Van/Pick-up"
self.carMetersLabel?.text = "5.5 - 6.5m"
self.carCategoryImageLabel?.image = UIImage(named: "vanPickup")
self.currentCell = 4
print("currentCell:::\(String(describing: self.currentCell))")
self.carCollection.reloadData()


default:

self.carCategoryLabel?.text = ""
self.carMetersLabel?.text = ""
self.carCategoryImageLabel?.image = UIImage(named: "")

break
}





}


}//loaduserData

最佳答案

这是如何做到的:

override func viewDidLoad() {
super.viewDidLoad()

collectionView.selectItem(at: [0, currentCell], animated: false, scrollPosition: .centeredHorizontally)
}

当您加载 viewController 时,我假设您设置了 currentCell?我看不到您原来的 viewDidLoad()viewDidAppear() 函数。如果您从以前的 viewController 实例化此 viewController,则从那里设置您的 currentCell。如果您转到此 viewController,请在 prepareForSegue 方法中设置它。

关于ios - 如何在 iOS Swift 中设置特定索引的 Collection View 单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51355347/

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