2016-06-03 1 views
1

내가 보통이 같은 UI 컬렉션 뷰를 구현 스위프트에 새로 온 사람과 목적 C.에 대한 사전 경험이없는 :UI 컬렉션에 텍스트 필드를 포함하는 방법 셀을보고 텍스트를 배열에 저장 하시겠습니까?

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate { 

let reuseIdentifier = "cell" 
var items = ["1", "2", "3" ... "100"] 


func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return self.items.count 
} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MyCollectionViewCell 

    cell.myLabel.text = self.items[indexPath.item] 

    return cell 
} 


func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
    // handle tap events 
    print("You selected cell #\(indexPath.item)!") 
    } 
} 

하지만 텍스트 필드에이 방법의 조금 생각이없는 그 셀은 선언 된 배열 (항목)의 숫자가 아닙니다. 그리고 배열에 입력 된 텍스트를 어떻게 저장할 수 있습니까?

P.S이 코드를 기대하지 않고 게시하는 것이지만 (나에게 많은 도움이 되겠지만) 어떻게해야하는지에 대한 지침이나 웹 링크가 있습니다.

답변

1

이렇게하는 방법에는 여러 가지가 있습니다. 간단한 방법으로 수 있습니다 : 스토리 보드 당신이 기능`didSelectItemAtIndexPath 코드 에 참조 할 수 있도록 텍스트 뷰에게 태그 번호를 알려에 UICollectionView 프로토 타입 셀에

드래그 UITextView, 당신에 대한 참조를 얻을 필요 이 같은 셀 :

let cell = collectionView.cellForItemAtIndexPath(indexPath) 

다음이

let textField = cell?.viewWtihTag(100) as? UITextField 

같은 태그에 의해 UITextView에 대한 참조를 얻을 수 있습니다 지금 당신은 당신이 값을 원하는대로 할 수 있습니다. 여기서 문제는 사용자가 UITextField를 클릭하면 텍스트 필터를 편집 할 수 있지만이 메서드를 트리거하지 않는다는 것입니다. 변경 한 다음 textField 외부를 클릭하면이 메서드가 트리거되고 변경된 텍스트가 표시됩니다. 사용자가 변경 사항을 수락 할 수있는 확인란을 추가하여이 문제를 해결할 수 있습니다. 또는 그런 것.

관련 문제