2016-09-06 11 views
0

사용자 지정 컬렉션 뷰 셀을 사용하여 컬렉션 뷰를 만들려고합니다.각 컬렉션 뷰 셀에 대한 배열 만들기

각 셀을 탭하여 배열에 저장하는 횟수를 추적하고 싶습니다. 따라서 사용자 정의 셀에는 레이블, IBAction 및 배열이 있습니다.

IBAction 내부에 배열에 1을 추가하고 개수를 인쇄하여이 작업을 수행 할 수 있습니다.

그러나 사용자 지정 셀 뷰 클래스 외부에서이 데이터에 액세스하려고합니다. 나는

self.titleLabel.text! 

물론, 내가 배열의 이름에 대한 변수를 사용할 수 없습니다 이름으로 각 셀 즉 특정 배열을 갖고 싶어! (내가 할 수 있으면 좋겠다)

그런 경우 어떻게 데이터를 저장하나요?

어디에서 어떻게 데이터를 쉽게 저장하고 처리 할 수 ​​있도록 배열을 정의해야합니까?

+0

1) 왜 당신은 당신의 배열의 이름에 대한 변수 이름을 사용할 수 없습니다? 당신은 분명히 할 수 있습니다. 배열에 대해 다른 것과 같은 속성을 사용할 수 있습니다. 2) 사용자 정의 셀 서브 클래스가 배열을 보유하지 않아야합니다. 셀은 데이터 표시에 대한 책임을 져야하며, 모델 또는 viewController는 배열과 같은 데이터 보유에 대한 책임을 져야합니다. viewController가 탭 수를 처리하고'didSelect' 델리게이트 메소드에서 그것을 증가 시키도록하십시오. –

+0

그 통찰력을 가져 주셔서 감사합니다. 확실히 MVC 모델을 기반으로 사용자 정의 셀 외부에 배열을 유지하는 것이 좋습니다. 그러나, 어떻게 해야할지 잘 모르겠습니다. 1) > self.titleLabel.text를 사용하여 맞춤 셀 내부에서 배열을 만들려고했습니다. 하지만 swift는 오류 을 던집니다. 2) 또한 셀이 여러 개인 경우 사용자 정의 셀 외부의 레이블에 어떻게 액세스합니까? "자체"키워드를 사용할 수 없습니다. 몇 가지 코드를 제공 할 수 있다면 도움이 될 것입니다. –

+0

해당 질문에 대답하려면 코드를 게시하여 사용자 지정 셀에 추가해야합니다. 그런 다음 Swift 코드를 디버깅 할 수 있습니다. 그것의 가능하다, 당신의 신속한 부호에 무언가 조금 틀리다 –

답변

0

당신의 탭 수를 보유하고 Dictionary를 선언 할 수있다 당신의 UIViewController :

var tapCounts = [NSIndexPath: Int]() 
let collectionView = UICollectionView() 

func tapAction(sender: UICollectionViewCell) { 
    if let indexPath = collectionView.indexPathForCell(sender) { 
     tapCounts[indexPath] = (tapCounts[indexPath] ?? 0) + 1 
    } 
} 
+0

다음은 내가 수정 내 프로젝트에 포함 시도 코드를 공유 감사 나는 "나는 > 덤프 (tapCounts) 를 사용할 때 내가 얻을 "내 사용자 정의 클래스 > KDRearrangeableCollectionViewCell와 > UICollectionViewCell 교체 - 0 키/값 쌍 " 무엇이 잘못 되었습니까 ... 도와주세요. –

+0

@EcoApps는 'tapAction'을 호출 할 때 문제가있는 것 같습니다. 당신의 버튼/제스쳐에서이 메소드에'target - action'을 설정 했습니까? 또한 도움이 될 수 있도록 코드 일부를 더 잘 공유하십시오. –

+0

이 프로젝트의 맨 위에 코드를 추가합니다. http://blog.karmadust.com/drag-and-rearrange-uicollectionviewsthrough-layouts/ https : //github.com/mmick66/KDRearrangeableCollectionViewFlowLayout –

관련 문제