2016-09-25 3 views
0

레이블이 테이블 뷰 셀에서 탭되면 다른 페이지로 이동하기 위해 Segue를 수행하고 싶습니다.[UITableViewCell] 유형의 값에 'performSegueWithIdentifier'멤버가 없습니다

나는 유형의 다음과 같은 오류 값을 얻을 [있는 UITableViewCell]가 어떤 멤버 없습니다 'performSegueWithIdentifier'

class IdeaCell: UITableViewCell { 

    override func awakeFromNib() { 
     super.awakeFromNib() 

     let tapUser = UITapGestureRecognizer(target: self, action: #selector(IdeaCell.goToUserPage(_:))) 
     tapUser.numberOfTapsRequired = 1 
     usernameLbl.addGestureRecognizer(tapUser) 
    } 

func goToUserPage(sender: UITapGestureRecognizer) { 
     self.performSegueWithIdentifier("goToTableFromOriginal", sender: nil) 
    } 
} 
+2

셀의 ISN ' UIViewController는 segue를 수행 할 수 없도록합니다. 프로토콜을 사용하여 셀이보기 컨트롤러에서 위임에 함수를 호출하고보기 컨트롤러 함수가 세그먼트를 수행 할 수 있어야합니다. – Paulw11

+0

http://stackoverflow.com/a/22761617/4475605 – Adrian

답변

0

오히려 당신의 세포에 탭 제스처 인식기를 추가하는 것보다 당신이 구현하는 경우, 그것은 간단하고 깨끗한 것 table(_:didSelectRowAt:) 메서드 (메서드 시그니처의 Swift 3 버전)를 테이블 뷰를 관리하는 뷰 컨트롤러에 추가합니다. (가능성이 테이블 뷰 컨트롤러?)

실패하면 didSelect(cell:UITableViewCell) 메서드 (또는 그 줄을 따라 뭔가)를 포함하는 TableViewCellDelegate라는 프로토콜을 만들어야합니다. 그런 다음 사용자 정의 테이블 뷰 셀에 대리자 속성을 추가하고 해당 속성을 cellForRow(at:) 메서드의보기 컨트롤러에 설정합니다.

그러면 셀에서 didSelect(cell:UITableViewCell)을 셀의 대리자로 호출합니다. 뷰 컨트롤러에서

당신은 도청 세포에 수행 할 작업을 결정하기 위해 도청 된 세포 파악하고를 사용하는 indexPath(for cell: UITableViewCell)를 사용하십시오 (사용자의 경우, SEGUE를 호출.)

관련 문제