2014-10-29 1 views
0

나는이 개 텍스트 필드가 : 우리가 필드의 오른쪽에 표시되는 활성화 "명확한"버튼을 누를 때 나의 이해에서올바른 인수를 전달하여 textFieldShouldClear를 필드 또는 다른 필드에 바인딩하는 방법?

@IBOutlet weak var countriesFieldVar: UITextField! 
@IBOutlet weak var countriesFieldVar2: UITextField! 

을 textFieldShouldClear는 실행해야합니다.

은 그래서 구현이 :

func textFieldShouldClear(textField: UITextField) -> Bool { 
    if textField == countriesFieldVar { 
     println("field 1") 
    } else { 
     println("field 2") 
    } 
    return true 
} 

이 코드는 아무것도하지 않는다, 그래서 내가 기능을 invoque 그것에게 올바른 텍스트 필드 인수를 전달해야한다 같아요. 하지만 어떻게 함수를 invoque하고 "clear"가 탭되는 필드에 해당하는 올바른 인수를 전달합니까?

(필드에 태그를 할당했습니다.) 신속하게 대답하십시오.

답변

2

사용자가 직접 함수를 호출하지 않고 지우기 버튼을 누르면 자동으로 호출됩니다. 텍스트 필드에서 델리게이트를 사용 했습니까?

countriesFieldVar.delegate = self 
countriesFieldVar2.delegate = self 
+0

. 고마워. 왜 내가 그것을 viewdidload에 넣어야 만했는지에 대한 이유는 무엇입니까? –

+1

이것은 프로토콜 위임 패턴이 작동하는 방식이며, iOS의 대부분의 것들은이 패턴 (textFields, tableViews ...)을 따릅니다. 기본적으로, 당신이 그 라인을 가지고 무엇을하는지는 클래스가 이제 textField의 변경 사항을 듣고 있으며, 특정 메소드 구현이 해고되어야한다고 말합니다. 실제로 호출하기 위해 textField를 사용하기 전에 대리자를 설정해야하므로 일반적으로 viewDidLoad 메서드가 가장 좋습니다. – Adis

관련 문제