간단한 수준의 디자인을 작성하려고하지만 조건이 충족되면 즉시 셀의 데이터를 다시로드하는 데 문제가 있습니다. 사용자는 보조 게임 통화 (별)를 사용하여 아직 충분한 포인트가없는 레벨의 잠금을 해제 할 수 있습니다. 잠긴 레벨을 클릭하면 별 수가 충분하면 잠금을 해제 할 수 있습니다.특정 조건이 충족되면 즉시 UICollectionView 셀을 다시로드하는 방법
제가하는 데 문제는 수준이 즉시 모달이 기각되면 내가 데이터를 다시로드 셀의 순서를 다시 수준의 컬렉션을보기로 돌아가 다음보기를 변경하고이 잠금을 해제하지 않는다는 것입니다
아래에 내 코드 : 의 ViewController
import UIKit
var stars = 10
var points = 11
var completeLevels:[String] = []
let levels = ["1","2","3","4","5","6","7","8","9"]
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate
{
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad()
{
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool)
{
if points >= 10
{
completeLevels.append(levels[0])
}
if points >= 20
{
completeLevels.append(levels[1])
}
if points >= 30
{
completeLevels.append(levels[2])
}
if points >= 40
{
completeLevels.append(levels[3])
}
if points >= 50
{
completeLevels.append(levels[4])
}
if points >= 60
{
completeLevels.append(levels[5])
}
if points >= 70
{
completeLevels.append(levels[6])
}
if points >= 80
{
completeLevels.append(levels[7])
}
if points >= 90
{
completeLevels.append(levels[8])
}
completeLevels = Array(Set(completeLevels)).sorted()
collectionView.reloadData()
}
override var prefersStatusBarHidden: Bool
{
return true
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
return levels.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! LevelCollectionViewCell
cell.levelName.text = levels[indexPath.row]
cell.lockedLevel.alpha = 1
for objects in completeLevels
{
if levels.contains(objects)
{
if levels.index(of: objects) == indexPath.row
{
cell.lockedLevel.alpha = 0
}
}
}
return cell
}
}
levelCollectionViewCell
,import UIKit
class LevelCollectionViewCell: UICollectionViewCell
{
@IBOutlet weak var lockedLevel: UIButton!
@IBOutlet weak var levelName: UILabel!
}
modalViewController
import UIKit
class modalViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func dismissModal(_ sender: Any)
{
dismiss(animated: true, completion: nil)
}
@IBOutlet weak var noStarsLabel: UILabel!
@IBAction func back(_ sender: Any)
{
dismiss(animated: true, completion: nil)
}
@IBAction func unlockLevel(_ sender: UIButton)
{
if stars >= 10
{
points += 10
stars -= 10
dismiss(animated: true, completion: nil)
}else{
noStarsLabel.text = "NOT ENOUGH STARS !"
}
}
override var prefersStatusBarHidden: Bool
{
return true
}
}
gameViewController 내가 코드에서 어디에서 modalViewController에 저장된 참조를 볼 수 없습니다
import UIKit
class gameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func addStars(_ sender: UIButton)
{
stars += 10
}
@IBAction func addPoints(_ sender: UIButton)
{
points += 10
}
}
당신은 의미합니까'collectionView.reloadData()':
또한의 UIViewController의
viewWillDisappear
이 collectionView를 다시로드 트리거 무시할 수 있을까? – the4kman