2014-10-07 2 views
5

사용자 정의 TableViewCell이있는 사용자 정의 TableViewController가 있습니다. 스토리 보드에서 셀에서 다른 ViewController로 세부 정보를 표시하기 위해 segue를 만들었지 만 prepareForSegue는 호출되지 않습니다. didSelectRowAtIndexPath를 사용해 보았지만 호출되지 않았습니다. 동적 인 사용자 정의 셀을 생성하고 스토리 보드에서 지정된 세그먼트를 얻지 못하기 때문에 그럴 수 있다고 생각하지만 그렇게 할 방법을 찾지 못했습니다. 내 BarButtonItem의 "newSegue"가 정상적으로 호출됩니다.prepareForSegue가 사용자 정의 uitableviewcell에서 호출되지 않았습니다.

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let CellIndentifier: NSString = "ListPrototypeCell" 

    var cell : MyTableViewCell = tableView.dequeueReusableCellWithIdentifier(CellIndentifier) as MyTableViewCell 

    var myClass: MyClass = self.myList.objectAtIndex(indexPath.row) as MyClass 

    cell.setCell(author: myClass.author, message: myClass.message) 

    return cell 

} 

어떤 도움 : 내 사용자 지정 셀을 정의 할 때

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    println("PREPARE FOR SEGUE") 
    if segue.identifier == "newSegue" { 
     println("PREPARE FOR NEW SEGUE") 
    } else if segue.identifier == "detailSegue" { 
     println("PREPARE FOR DETAIL SEGUE") 
    } 
} 

override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { 
    println("You selected cell!") 
} 

는 내가 뭔가 잘못하고있을 수도 의심?

+0

가이 코드는 테이블 뷰의 대리인으로있는 컨트롤러를 설정 했습니까 (클래스가있는 UITableViewController의 서브 클래스 인 경우 자동으로 설정해야합니다)? 셀에서 터치를 가로 챌 가능성이있는 의견이 있습니까? – rdelmar

+0

예, 대리인으로 설정했습니다. 셀에는 사용자 정의보기가 있지만보기 나 레이블에서 연속보기를 만들 수 없습니다. – filipebarretto

+0

내용보기 나 레이블이 아닌 셀 자체에서 연결해야합니다. 캔버스에서 셀을 가져올 수 없다면 왼쪽의 장면 목록으로 이동하여 셀에서 드래그하십시오. – rdelmar

답변

3

Seague를 셀이 아닌 InterfaceBuilder의 TableViewController에서 드래그하십시오. 그런 다음 식별자가 didSelectRowAtIndexPath 인 섹그를 performSegueWithIdentifier을 통해 수행 할 수 있습니다.

또한 기능 서명을 확인하십시오. 암시 적으로 풀어 선택적 항목에 대한 느낌표가 더 이상 필요하지 않습니다 :

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let cell = tableView.cellForRowAtIndexPath(indexPath) 
    tableView.deselectRowAtIndexPath(indexPath, animated: true) 
    performSegueWithIdentifier("mySegue", sender: cell) 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
} 
+1

이것은 해결책이 아니라 OP 문제를 해결하는 방법입니다. OP는 didSelectRowAtIndexPath가 호출되지 않기 때문에 이것은 어떤 식 으로든 작동하지 않습니다. – rdelmar

+0

나는 또한이 aproach를 시도했지만, 나는 그랬듯이 didSelectRowAtIndexPath가 호출되지 않는다. 셀은 MyTableViewCell.swift에 정의됩니다. 이것이 문제의 원인이 될 수 있는지 나는 모른다. – filipebarretto

+0

당신의'didSelectRowAtIndexPath' 서명이 부정확하므로 호출되지 않습니다. 위의 샘플 코드를 확인하십시오. 느낌표를 제거해야합니다. 코드 서명이 Xcode의 베타 단계에서 변경되었으며 자동 코드 완성이 여전히 올바르지 않습니다. – zisoft

관련 문제