xcode7.x Swift 에 대해서 질문이 있습니다.(컬렉션 뷰에 대하여)


안녕하세요 swift로 어플개발을 하고있는 학생입니다!

오늘은 다름아닌 클래스간의 데이터 전달중 궁금한게 있어서 질문 올립니다.

override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int

궁금한점은 총 3개입니다

  1. 명령은 최초 한번밖에 작동을 안 하더군요 이 함수를 여러번 호출 할수있는 방법이 있을까요? 예를들어서 다른 테이블 뷰에서 선택시마다 호출되어 새롭게 아이템들이 바뀌는듯한 퍼포먼스를 주고싶어서 그렇습니다.

  2. 이 함수는 초기값을 주는 함수인건가요?

  3. 각 뷰의 클래스를 생성할때마다 subclass를 바꿔줄때마다 기본적으로 제공해주는 이 override View들의 정체는 무엇인가요? 혹시 참고할만한 자료가 있을까요?

  • 2016년 07월 21일에 작성됨

조회수 277


1 답변


좋아요
1
싫어요
채택취소하기

1 - UICollectionView에 사용되는 데이터를 변경해주신 다음 reloadData() 메소드를 호출 해주시면 됩니다. (UITableView도 마찬가지입니다.)

collection.reloadData()

2 - UICollectionView 에서 데이터를 초기화 하거나 리로드 해줄때 호출되는 메소드입니다.

3 - Delegate 또는 DataSource에 필수적으로 포함되어야 하는 메소드들 입니다. UICollectionView에서는 초기화 또는 리로드 할때 최소한으로 필요한 메소드 입니다. 나머지 주석 처리 되어 있는 메소드들은 필요하면 사용하는 옵션같은 경우인거죠.

 //MARK: 콜렌션뷰 데이터소스 & 델레게이트
    //컬렉션뷰 섹션 갯수
    func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
        return 1;
    }

    //셀 아이템 갯수
    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 10
    }

    //셀 아이템 정의
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! UICollectionViewCell

        return cell

    } 

    //셀 아이템 선택 했을 경우 호출
    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

    }

    //셀 크기
    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
        return CGSizeMake(100, 100)
    }

    //height 간격
    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
        return 0;
    }
    //width 간격
    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
        return 0;
    }

참고 할 만한 자료는 밑에 링크 처음부터 차근차근 읽어 보시면 UICollectionview에 대해서 어느정도 터득 하실 수 있을겁니다.

궁금한점이 있으시면 댓글 남겨 주세요! 그리고 제가 잘 못 알고 있거나 틀린점이 있다면 언제든지 편집 요청해주세요 :)

  • 2016년 07월 23일에 작성됨
    Swift로 iOS 개발을 하고 있습니다

  • 정확한 정보와 자료 감사드립니다!    한경민   2016.7.23 03:04     
  • 혹시 저 collection.reloadData() 를 쓰는데에 조건이나 제약같은것이 있나요? 특정한 곳에서만 사용이 가능하다던지...    한경민   2016.7.23 03:15     
  • 리로드 할때 메인쓰레드에서만 해준다면 문제는 크게 없을꺼예요    myoung   2016.7.23 09:48     
  • 메인쓰레드는 어디를 말씀하시는 건가요???    한경민   2016.7.25 15:08     
  • GCD또는 NSThread를 비동기적으로 데이터를 처리하고 그 안에서 UI적인 변경(리로드또는 addSubview등등)을 하게 되면 앱이 뻗거나 반응을 하지 않을수가 있습니다. UI변경은 무조건 메인쓰레드로 들어와서 변경 해주셔야되요     myoung   2016.7.25 15:12     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close