2017-11-03 4 views
0

ViewController에서 CollectionViewItem으로 데이터를 전달하는 올바른 방법은 무엇입니까?CollectionView 데이터 전달

ViewContoller

func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {   
     let item = CollectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "CollectionViewItem"), for: indexPath) as! CollectionViewItem 
     item.themeName = getDirectoryContentByIndex(index: indexPath) 
     return item 
    } 

CollectionViewItem는

class CollectionViewItem: NSCollectionViewItem { 


    var themeName: String! 
    @IBOutlet weak var NameOfTheme: NSTextFieldCell! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do view setup here. 
    } 
} 

편집 : 나는 NameOfTheme의 stringValue로 themeName을 할당 할. 그러나 값을 설정하면 IBOutlet은 0입니다.

+0

한 가지 방법은 프로토콜 및 대의원을 사용하는 것입니다이 함수를 호출합니다 cellForRow에 그래서. 프로토콜 및 대표자에 사용된다 한 클래스에서 다른 클래스로 대화 할 수 있습니다. 여기에서 어떻게 사용하는지 배울 수 있습니다 : https://stackoverflow.com/questions/40501780/examples-of-delegates-in-swift –

답변

0

난 당신이 휴대 private의 필드를 만들고 우리의 경우 configure(themeName: String)에 (configure(YOUR_PARAMS)을하는 것이 좋습니다. 당신이 cell.configure(themeName: "")

+0

좋은 생각이지만, 저에게는 효과가 없습니다. 문제는 내'@IBOutlet weak Name NameOfTheme : NSTextFieldCell! '이 데이터를 전달하는 순간에 설정되지 않았다는 것입니다. 그래서 stringValue를 설정할 수 없습니다 : ( –

+0

@KennyWagenknecht'NSCollectionVi ew'이지만,'UICollectionView'와 매우 유사하다고 생각합니다. 올바른 방법으로 세포 유형을 등록해야합니다 (여기에 xib 파일을 사용하고있을 것입니다). 그냥 Google에 입력하십시오. 파일을'CollectionViewItem'에 연결했는지 확인하십시오. 다시 말해서 Google이 이러한 기본적인 것들을 도와줍니다. 그런 다음 위의 방법으로 사용할 수 있습니다. awakeFromNib 및 다른 라이프 사이클 메소드에 중단 점을 만들어 연결을 올바르게 수행하고 있는지 확인하십시오. –