JSON을 통해 들어오는 데이터가 있고 일부 논리에 따라 데이터를 내 컬렉션 뷰에서 전환 할 수있었습니다. 로그인 한 경우 한 세트의 데이터가 표시되고 로그 아웃하면 다른 데이터 세트가 표시됩니다. 하지만 이제는 버튼 푸시를 기반으로 내 컬렉션보기의 데이터를 변경하려고합니다. 두 개의 버튼이 있습니다. 하나는 "모든 제품"을 보여주고 다른 하나는 "설치된 제품"을 보여줍니다. 어떻게 데이터를 전환하기 위해 단추를 밀어 넣을 수 있습니까?버튼을 사용하여 NSCollectionView의 데이터를 변경하는 방법
CollectionView 논리
extension ViewController: NSCollectionViewDataSource, NSCollectionViewDelegate, NSCollectionViewDelegateFlowLayout{
func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
let prefs:UserDefaults = UserDefaults.standard
let isLoggedIn:Int = prefs.integer(forKey: "ISLOGGEDIN") as Int
if (isLoggedIn == 1) {
return installedArray?.count ?? 0
}
return productsArray?.count ?? 0
}
func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
let prefs:UserDefaults = UserDefaults.standard
let isLoggedIn:Int = prefs.integer(forKey: "ISLOGGEDIN") as Int
if (isLoggedIn == 1) {
let item = collectionView.makeItem(withIdentifier: "Installed", for: indexPath) as! Installed
item.buildProduct = installedArray?[indexPath.item]
return item
}
let itemB = collectionView.makeItem(withIdentifier: "test1", for: indexPath) as! test1
itemB.buildProduct = productsArray?[indexPath.item]
return itemB
}
버튼
@IBAction func allAppsPushed(_ sender: Any) {
let prefs:UserDefaults = UserDefaults.standard
let isLoggedIn:Int = prefs.integer(forKey: "ISLOGGEDIN") as Int
if (isLoggedIn == 1) {
}else{
}
}
@IBAction func installedPushed(_ sender: Any) {
let prefs:UserDefaults = UserDefaults.standard
let isLoggedIn:Int = prefs.integer(forKey: "ISLOGGEDIN") as Int
if (isLoggedIn == 1) {
}else{
}
}
내가 말하는 내용을 이해하지만 로그인 한 경우에만 내 데이터가 변경됩니다. 내가 로그인했는지 여부에 의존하고 싶지 않습니다. 버튼 누름에 따라 순전히 바꿀 필요가 있습니다. 나는 네가 한 말을 시도했지만 아무것도 바뀌지 않았다. 이미 존재하는 동일한 데이터를 다시로드하고 전환하지 않습니다. – Eseye
그래서 버튼이 뷰 컨트롤러의 인스턴스 변수를 변경 한 다음 콜렉션 뷰의'collectionView : cellForItemAtIndexPath :'메소드에서 해당 인스턴스 변수의 값을 사용하여 콜렉션 뷰에 표시 할 것을 결정하십시오. –
당신은 이런 식의 예가 있습니까? 나는 작동하는 솔루션을 가지고 있지만 당신의 방법에 대해서도 궁금합니다. – Eseye