2016-10-16 6 views
0

나는 내 tableview의 각 셀에 텍스트 필드가 있습니다. 사용자가 리턴 키를 눌렀을 때 키보드를 종료하고 싶습니다. 나는 시도했다 :return 키를 누르십시오 uitableviewcell swift

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 

    textField.resignFirstResponder() 

    return true 
} 

그러나 그것은 작동하지 않는다. 도와주세요, 고마워요!

답변

1

셀 클래스에 텍스트 필드 IBOutlets을 생성했다고 가정합니다.
UITextFieldDelegate에 사용자 정의 당신이하도록해야 UITableView

cell.yourTextField.delegate = self 
0

cellForRow 데이터 소스 방법으로 확인한다에 UITableViewCell 클래스를 자체로 텍스트 필드 대리자를 보내기 awakeFromNib에서

class TableViewCell: UITableViewCell, UITextFieldDelegate { 
    // ... 
} 

를 셀에 당신이해야 당신의 텍스트 필드 위양 클래스 :

override func awakeFromNib() { 
    // ... 

    textField.delegate = self 

    // ... 
} 

마지막으로 mplement textFieldShouldReturn :

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 

    textField.resignFirstResponder() 

    return true 
} 

희망을 얻었습니다.

+0

잘못되었습니다. 'awakeFromNib'에서 구현 된 경우,'ViewController'의 일부가 아니며 사용자 정의 셀의 일부일뿐입니다. 텍스트 필드는 테이블에 있습니다. 그것은'cellForRow'에 있어야합니다. –

+0

@RajanMaheshwari 건축 적 관점에서 * 컨트롤러 레이어 *가 셀의 구성 요소를 처리하도록하는 것은 좋은 생각이 아닙니다. 이것은 "대규모 뷰 컨트롤러"이론을 강조합니다. –

+0

형, 그것은 '자기'와 관련이 있습니다. customcell 클래스에는 셀프를 만들 수 없습니다. 만들고 있다면, 커스텀 셀에'UITextFieldDelegate'를 구현해야합니다. 그리고 그것의 구성 요소가 아닙니다. 'awakeFromNib'에서 디자인 레이아웃을 처리 할 수 ​​있지만 델리게이트의 경우 소유권이 있습니다. 커스텀 셀 클래스에서 델리게이트를 구현하는 경우, 추가 오버 헤드로 작용하는'ViewController'에서 델리게이트를 통해 이것을 다시 전달해야합니다. –

0

대리인 양식 스토리 보드를 제공 할 수 있습니다.

관련 문제