2016-08-15 2 views
1

내 응용 프로그램은 Firebase 데이터베이스에서 데이터를 가져 와서 CustomCell을 사용하여 tableView에 저장하고 목표는 셀을 두드리면 레이블에 저장된 문자열을 원한다. 그 세포를 두드렸다.didSelectRowAtIndexPath의 Firebase에서 오는 CustomCell 컨텐츠에 액세스

그래서 지금 며칠 동안이 기능을 사용하고 있으며 제공되는 솔루션은 주로 콘텐츠가 동적으로로드되지 않는 정적 셀에만 적용됩니다. 옵션은 내가 시도 :

  1. 후, 내용을 저장 indexPath와 함께 그들을 얻을 수 배열을 사용 : 배열이 적절하게 이어지는, 중포 기지와 동기화되지 않았습니다 때문에 이것은 어려운 것으로 밝혀졌다 indexPath에서 주문이 잘못되었습니다. 라이브러리를 찾지 못했지만 배열을 동기화 상태로 유지하고 있지만 Firebase를 사용할 때 어레이에서 멀리 떨어져 있어야한다는 일반적인 합의가있는 것으로 보입니다. 내 세포를 채울 FirebaseUI을 사용하고 있기 때문에, 나는 또한 어려운 솔루션 것을 만들어 두 가지 방법 cellForRowAtIndexPath 또는 dequeueReusableCellWithIdentifier을하지 않아도 : 대표 또는 제안 된 here 같은 클로저를 사용
  2. .

는 내가 지금까지 가지고 :

func getQuery() -> FIRDatabaseQuery { 
let myTopPostsQuery = (ref.child("posts")) 

return myTopPostsQuery 
} 

override func viewDidLoad() { 
super.viewDidLoad() 


self.ref = FIRDatabase.database().reference() 

dataSource = FirebaseTableViewDataSource.init(query: getQuery(),prototypeReuseIdentifier: "Cellident", view: self.tableView) 


dataSource?.populateCellWithBlock { (cell: UITableViewCell, obj: NSObject) -> Void in 

    let customCell = cell as! CustomCellTableViewCell 
    let snap = obj as! FIRDataSnapshot 
    let childString = snap.value as! [String : AnyObject] 

    customCell.textLabel.text = String(childString)} // << This is what I need to access in didSelectRowAtIndexPath 

} 

    tableView.dataSource = dataSource 
    tableView.delegate = self 

} 

내 질문은 지금 무엇을 갈 수있는 가장 실용적인 방법이 될 것이고, 해결책이 있다면 나는 아직 고려하지 않은?

답변

1

didSelectRowAtIndexPath TableViewDelegate 방법으로이 작업을 수행

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let path: NSIndexPath = indexPath 
    let source = dataSource 
    let snapshot: FIRDataSnapshot = (source?.objectAtIndex(UInt(path.row)))! as! FIRDataSnapshot 
    let childString = snapshot.value as! String 
} 
관련 문제