Im, создавая игру с символом collectionView, выбирающим в нижней части GameScene. Многие из символов заблокированы, поэтому я отображаю «Заблокированное» изображение в качестве изображения ячейки коллекции. Однако, когда пользователь разблокирует персонажа, и он снова загружает GameScene (перейдите в сцену gameOver, перезапустите игру до настоящего GameScene), мне нужно обновить изображения коллекции CollectionView и поменять изображение «Заблокировано» обычным образом. Ive пытался так много разных вещей, но он не работает. Он не будет заменять/перезагружать новые изображения. Я знаю, что это просто что-то маленькое, чего мне не хватает, но все мои коды связаны с представлением коллекции.Swift: Обновить CollectionView Cell Image
class CharactersCollectionViewCell: UICollectionViewCell {
//MARK : Public API
var characters : NACharacters!{
didSet{
updateUI()
}
}
//MARK : Private
@IBOutlet weak var featuredImageView: UIImageView!
private func updateUI(){
self.layer.borderColor = UIColor.whiteColor().CGColor
self.layer.borderWidth = 2.5
self.layer.masksToBounds = true
self.layer.cornerRadius = CGFloat(roundf(Float(self.frame.size.width/2.0)))
featuredImageView.image = characters.featuredImage
}
}
class NACharacters {
var featuredImage : UIImage!
static var characterLineUp = [NACharacters]()
init(featuredImage: UIImage){
self.featuredImage = featuredImage
}
static func createCharacters() -> [NACharacters]{
print("Inside create character")
characterLineUp.insert(NACharacters(featuredImage: UIImage(named: "DiploSquadCollectionView")!), atIndex: 0)
characterLineUp.insert(NACharacters(featuredImage: UIImage(named: "LockedNBAPlayersCollectionView")!), atIndex: 1)
if(NSUserDefaults().unlockNBAPlayers == true){
characterLineUp[1].featuredImage = UIImage(named: "NBAPlayersCollectionView")!
}
characterLineUp.insert(NACharacters(featuredImage: UIImage(named: "LockedLeanSquadCollectionView")!), atIndex: 2)
if(NSUserDefaults().totalDabs >= 10000){
print("setting up lean to be unlocked")
characterLineUp[2].featuredImage = UIImage(named: "LeanSquadCollectionView")!
}
return characterLineUp
}
}
//Inside Game View Controller
@IBOutlet var collectionView: UICollectionView!
//MARK : Data Source
internal var characters = NACharacters.createCharacters()
extension GameViewController : UICollectionViewDataSource, UICollectionViewDelegate{
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return characters.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(Storyboard.CellIdentifier, forIndexPath: indexPath) as! CharactersCollectionViewCell
cell.characters = self.characters[indexPath.item]
return cell
}
//Inside Game Scene
var collectionView: UICollectionView? {
return self.view?.subviews.filter{ $0 is UICollectionView }.first as? UICollectionView
}
override func didMoveToView(view: SKView) {
//INSIDE HERE I NEED TO UPDATE THE COLLECTION VIEW CELL IMAGES
}
Я знаю, это выглядит как много кода, но большинство из них является довольно стандартным. Я покажу вам все это, чтобы мы могли точно указать, что не так или что нужно сделать, чтобы заставить это работать. Это весь мой код, связанный с collectionView.
Вы не должны фильтровать подвиды вашего собственного контроллера подкласса, чтобы найти CollectionView. Можете ли вы поделиться иерархией «Inside Game Scene» в отношении «Inside Game View Controller»? – kezi
@kezi Я отфильтровываю subViews, потому что когда игра перезапустится, он установит значение collectionView равным нулю, это решит эту проблему. Тем не менее, я не думаю, что это связано с проблемой, с которой я сталкиваюсь теперь с изображениями CollectionViewCell. Что вы подразумеваете под иерархией Inside Game Scene. Извините, я немного новичок в быстрой ха-ха. – OriginalAlchemist
Да, я просто говорил, что вы можете сохранить ссылку на просмотр коллекции, чтобы вам не приходилось гадать с опцией '?'. По иерархии я имел в виду, в каком виде. Была ли сцена внутри зрения контроллера? И есть ли представление коллекции в одном представлении? – kezi