2017-04-30 3 views
0

제 질문은 이것입니다 : UILabel 탭을 Swift 3 언어에서 스타일 상 허용 할 수있게 만드는 방법은 다음과 같습니까? 나는 그것이 "파리를 컴파일하는 경우"라고 유혹을 받는다. 그러나 나중에 나에게 물린다면이 "지름길"을 사용하는 습관에 빠지기를 원하지 않는다. 또한, 그것이 수용 가능한 경우, 나 같은 신인들에게 분명하지 않은이 방법을 사용하는 데 몇 가지 단점이 있습니까?Swift 3.0의 UILabel에 UIButton을 레이어하는 것이 적절한 언어입니까?

코드를 구현할 방법을 찾고 있지 않다는 점에 유의하십시오. 나는 내가 가진 해결책이 언어 스타일 관점에서 받아 들일 수 있는지 묻는다.


나는 테이블 지금 2 일간 세포와 어떤 방법 나는 시도 안에, 그것은 컴파일해도 오류의 일종이 항상 존재 때 TapGesture을 수용하기 위해 UILabel의를 얻기 위해 노력했습니다. 직감적으로 테이블 뷰의 스토리 보드로 가서 (누적되거나 정렬되지 않았거나 스토리 보드의 실제 2D 공간을 실제로 차지하는) 버튼 위에 버튼을 추가했습니다. 단추 텍스트를 삭제하고 테이블보기 셀 코드에 연결 한 다음 기본 기능을 구현하여 UILabel의 텍스트를 빨간색으로 변경했습니다. 이 모든 기능은 예상했던 것과 똑같습니다. 버튼을 클릭하면 텍스트가 검은 색에서 빨간색으로 바뀌고 다시 클릭하면 되돌아옵니다. UILabel 텍스트는 흰색 배경의 표 셀에서 정적이며 내 실제 함수는 텍스트를 변경하지 않으므로 해당 뷰에서 위임을 통해 다른보기를 변경합니다.

왜 이런 식으로합니까? UILabel 사용 대화 상자를 확인하고 다른 질문과 답변을 탭핑 할 수 있도록 여기에 따라도 테이블보기 셀에 UILabel을 끌어다 놓고 제어 할 수는 없으며 단순히 옵션이 존재하지 않습니다. 풀다운 메뉴에서 UILabel을 테이블 뷰 컨트롤러로 드래그 앤 드롭하면 사용할 수 있습니다. 이것은 터치를 감지하는 테이블 뷰 컨트롤러이기 때문에 나에게 일종의 감각을줍니다 (맞습니까?). 그러나 다른 한편으로는 this question에 대한 답을 따를 때 잘 작동하는 테이블보기 셀에 스위치가 있습니다. 스토리 보드 코드 interation (컨트롤 + 끌기)의 간단한 기능은 내가 원하는 것을 얻지 못하게합니다. 어쩌면 컨트롤 + 드래그가 내가 행동을 취할 수 있도록 허용해야합니까? 나는 모른다. UILabel의 텍스트 크기 조절 기능이 정말 편리하기 때문에 UIButton 만 사용하고 싶지 않습니다.

+0

보면 : 다음 코드를 고려 https://github.com/zacwest/ZSWTappableLabel) – n00bProgrammer

+2

Swift 3과 어떤 관련이 있습니까? Swift 2, Swift 3, Objective-C 또는 다른 언어를 사용하든 상관 없습니다. – rmaddy

+0

@rmaddy 나는 내가하고있는 일에 특화하려고 노력하고있다. 언어 스타일이 모든 언어에서 동일하다는 귀하의 주장은 전혀 사실이 아닙니다. 그렇지 않으면 Swift에서 python list comprehension을 사용할 수 있습니다. 귀하의 질문에 대답을 간절히 바란다. 컴파일되는 한 괜찮습니다. –

답변

0

그냥, 테이블 셀에 탭을 인식 클래스를 테이블 뷰

tableView.delegate = self 

의 위임을 만들고 구현하려면

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     //your code here 
    } 

나는 또한 당신이 시간을 내 주셔서 감사하겠습니다 UITableViews에 대해 좀 더 읽으십시오. 모든 UITableViewCell 자체적으로 레이블이 있습니다. (예를 들면, [ZSWTappableLabel] TTTAttributedLabel (https://github.com/TTTAttributedLabel/TTTAttributedLabel)와 같은 링크 검출 및 사용자 상호 작용을 지원할 UILabel의 오픈 소스 서브 클래스로

tableView.dataSource = self // this code will ideally be in init 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "lovCell") 
     cell.textLabel?.text = dummyData[indexPath.row] 
     return cell 
    }