2017-10-19 19 views
0

지금까지 @IBAction을 사용할 때까지 tableViewCell, 을 클릭하여 함수를 트리거해야하지만 그 옵션은 버튼 유형에서만 사용할 수 있습니다. 다른 방법으로는 찾을 수 없습니다. this 그런데 지금의 내가있다 :swift @IBAction from tableViewCell

@IBAction func springPrs(_ sender: Any) { 
    //doing stuff.. 
} 

하지만 지금은 @IBOutlet

@IBOutlet weak var nextTrackCell: nextTableViewCell! 

을 가지고 있고 그것을 클릭하여 기능을 트리거합니다. 어떤 도움이 필요합니까?

답변

1

이, 당신은 didSelectRowAt라는 UITableViewDelegate에서 대리자 메서드 잘못된 접근 방식 구현해야한다 : 그것은 MVC 디자인 패턴을 위반하고이 때문에 테이블 뷰 셀에 직접 액션을 추가하지 않아야

public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
      //do your stuff here. 
     } 
+0

감사하지만, 일이 내가 테이블보기 외부의 그을음 셀을 만들어, 내가이 빠른 새로운 해요, 나는 그것이 옳은 일이 아니다 추측하고있어 (나는 단점을 알고 싶습니다 이),하지만 여전히 방법이 있습니까? – hhh

+0

이것은 원하는 작업을 수행하는 올바른 방법입니다. 또한, 당신은 테이블 뷰 밖에서 셀을 생성해서는 안됩니다. 셀은 테이블 뷰와 함께 사용하도록 만들어졌으며 혼자가 아닙니다. 단일 셀을 사용하는 경우 –

+0

대신 UIView로 전환하는 것을 고려하고 UIview에 대해 "onclick"함수를 어떻게 만들 수 있습니까? – hhh

0

을 이 전화 번호는 UITableViewDelegate에 이미 내장되어있어이를 쉽게 처리 할 수 ​​있습니다.

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    if indexPath.row == 0 { 
     // do something when the top row tapped 
    } else { 
     // do something when any other row is tapped 
    } 
} 
+0

나는 오버라이드 키워드가 컴파일러 오류를 일으킬 것이라고 생각합니다. –

+0

@LuizFernandoSalvaterra 네가 맞아, 사과 할께. 델리게이트 콜백이 이미 구현 된 곳에 'UITableViewController'를 사용하면 코드가됩니다. –

+0

그래, 나도이 접근법을 사용 하하하 –