2011-05-03 2 views
0

저는 uiviewcontroller가 있습니다. 이보기에는 버튼이 클릭되면 해당 버튼이 팝업되어야합니다. 대화 상자와 같이 사용자에게 어떤 값을 입력하도록 요청합니다. 사용자가 값을 입력하면 다른 사용자 정의 (배경 이미지 사용) "확인 대화 상자 확인"이 표시됩니다.이 대화 상자에는 예/아니오 버튼 2 개가 있습니다. 이 "확인 대화 상자"는 다른 클래스에서 다시 사용할 수 있습니다. "델리게이트 및 데이터 소스"에 대한 사과 문서를 읽었으므로 델리게이트 함수에 대한 몇 가지 질문은 있지만 델리게이트 함수를 사용해야하는지 아직 확실하지 않습니다. 이견있는 사람?팝업 메시지를 위해 사용자 지정 대리자 함수 또는 사용자 지정 UIView를 만드시겠습니까?

답변

1

대리인은 매우 유용하지만 프로토콜과 함께 사용됩니다. 프로토콜은 일종의 "계약"을 정의하여 델리게이트가 해당 메소드에 응답 할 수 있도록합니다. 예를 들어, UIConfirmBoxDelegate라는 프로토콜을 만들 방법 수 :

- (void)confirmBox:(UIConfirmBox*)box didChoose:(ButtonEnum)button; 

귀하의 위임 객체가 다음 프로토콜 및이 방법 모두 구현해야합니다. 첫 번째 매개 변수는 위임 된 메시지를 보내는 개체이며, 두 번째 매개 변수는 클릭 한 단추를 나타내는 열거 형 값입니다. 이렇게하면 앞으로 더 많은 버튼을 쉽게 추가 할 수 있습니다 (예, 아니요, 취소?).

read more about protocolsdefining enums (위에서 언급 한 방법의 두 번째 매개 변수)이 가능합니다. 위임을 사용하여 UISlider의 가치를 얻을 방법 :


는 코멘트에 새로운 질문에 대답합니다. 슬라이더를 조작 할 때마다 발생하는 대리자를 사용할 수 있습니다. 그냥 같은 새로운 위임 기능을 가지고 :

- (void)confirmBox:(UIConfirmBox*)box didChangeSlider:(UISlider*)slider; 

하고 필요에 따라 함께 할 수있는 대리인에게 확인 상자와 슬라이더 "전체 판매"를 전달합니다. 전체 슬라이더에 포인터를 전달하고 싶지 않으면 값을 전달할 수도 있습니다. 슬라이더의 값 변경에 응답하여 IBAction 내 대리인에게 메시지를 보내면 이동하도록 설정해야합니다.

+0

+1 위임 용. Objective-C가 권장하는 가장 좋은 디자인 패턴 중 하나. – Sam

+0

니스 !! 방법에 대한 확인 상자에서, 나는 사용자 입력 값을 가지고 (나는 그/그녀가 구입하고자하는 항목의 수를 얻기 위해 UISlider를 사용한다)? 그 가치를 얻으려면 어떻게해야합니까? –

+0

답변이 업데이트되었습니다. –

관련 문제