0

我有一個collectionView與多個細胞,當我打開它,我想選擇一個特定的細胞,它顯示爲選擇和滾動集合視圖的那個,而無需選定單元格的位置自己動手滾動。滾動到的CollectionView的物種指數

我可以顯示電池的選擇,但滾動似乎並沒有從所提供的功能工作。

這是我的嘗試。

class RepsCellView: UICollectionViewCell, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout { 

    lazy var repsValuesCollectionView: UICollectionView = { 
     let layout = UICollectionViewFlowLayout() 
     layout.scrollDirection = .horizontal 
     let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) 
     collectionView.backgroundColor = UIColor.black 
     collectionView.showsHorizontalScrollIndicator = false 
     collectionView.translatesAutoresizingMaskIntoConstraints = false 

     return collectionView 
    }() 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     setupViews() 
    } 



    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemented") 
    } 

    func setupViews() { 

     addSubview(repsValuesCollectionView) 

     //... 
     // Cell 
     let selectedIndex = IndexPath(item: 19, section: 0) 
     repsValuesCollectionView.selectItem(at: selectedIndex, animated: true, scrollPosition: [.centeredHorizontally, .centeredVertically]) 

    } 

    // CollectionView DataSource Functions 
    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
     return 100 
    } 

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) 
     return cell 
    } 
} 

在此先感謝。

回答

1

你用什麼ViewController事件方法來運行你的代碼?

反正我可以滾動它把你的代碼中的ViewController事件方法viewDidAppear方法。

class CollectionViewController: UICollectionViewController { 
    override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 

    let cellToSelect = IndexPath(item: 99, section: 0) 

    self.collectionView?.scrollToItem(at: cellToSelect, at: [.centeredHorizontally, .centeredVertically], animated: true) 
    } 

    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return 1 
    } 

    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! RepsCellView 
    cell.setupViews() // added this line 
    return cell 
    } 
} 
+0

我已更新我的代碼問題。我從包含CollectionView的CollectionViewCell調用該方法。 – Gugulethu

+0

我已經更新我的答案,在方法'cellForItemAt'你的父母根的CollectionView的代碼,調用'cell.setupViews()'就像我在我的代碼一樣。 – Wilson

相關問題