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

조회수 2845회

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

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

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

궁금한점은 총 3개입니다

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

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

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

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.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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)