2014-06-07 2 views
0

안녕하세요, 저는 Mac 개발 초보자이며 바인딩 (xcode 5.1.1)을 사용하고 싶습니다.모델 키 경로 구문 - 바인딩 xcode 5.1.1

배열 컨트롤러의 항목으로 라디오 버튼의 제목을 동적으로 설정하려고합니다. 나는 그것을 수행 할 수있는 구문 설명과 같은 것을 찾고있다.

예컨대 value1과 같은 것 WHERE value2 = "bla"

Google에서 검색을 시도하면 프로그래밍 방식으로 해답을 찾을 수 있습니다.

이 필드에서 사용할 수있는 구문을 보여주는 몇 가지 예가 있습니까?

아래 그림은 내 뜻을 보여 주어야합니다.

enter image description here

+0

달성하려는 목표가 명확하지 않습니다. 나는 당신이 바인딩의 목적을 오해 한 것 같아요. 당신이 설명하는 종류의 조건은 없습니다. value2가 "bla"가 아니면 버튼의 제목은 무엇입니까? 기본적으로 키 경로는 모델 객체의 속성 또는 일련의 속성을 지정합니다. 그게 다야. 단지 속성의 이름을 지정합니다. 이러한 속성의 값에 따라 단추의 바인딩 된 특성 값 (이 경우 제목)이 결정됩니다. –

+0

나는 내가하는 일이 잘못된 길임을 알고있었습니다. 실제로 알기를 원하는 것은 배열 컨트롤러에게 라디오 그룹이 어떤 엔터티를 선택했는지 알려주는 것입니다. xcode 5 인터페이스에서만이 작업을 수행하는 방법에 대한 자습서 또는 예제를 찾을 수 없습니다. 그래서 코드를 쓰지 않고 – Bolic

답변

1

... 먼저

, 바인딩은 항상 올바른 기술이 아니다. 그것은 어떤 것을 단순화 할 수는 있지만 모든 것을 할 수는 없으며 할 수있는 일의 일부라도 그것을 반드시 단순하게 만들 필요는 없습니다.

라디오 버튼은 종종 NSMatrix으로 구성됩니다. 이 경우 행렬 바인딩을 바인딩하여 선택 항목을 추적 할 수 있습니다. 행렬에는 세 가지 내용 관련 바인딩이 있는데, 이는 혼란 스러울 수 있습니다. "내용"바인딩이 기본입니다. 어떤 경우에는 충분합니다. 그러나 바인딩되는 객체와 행렬의 셀에 표시되어야하는 값 사이에 구별이있는 경우 "contentValues"바인딩을 바인딩하여 컨텐트 바인딩의 하위 경로가 될 수 있습니다. 즉, 모델 키 경로의 끝 부분에 추가 요소가 추가되어 콘텐츠 바인딩과 동일해야합니다.

또한 선택한 개체를 콘텐츠 개체와 구분하려면 "contentObjects"를 콘텐츠 바인딩의 하위 경로에 바인딩 할 수 있습니다.

예를 들어, 콘텐츠가 Person 묶음의 배열 컨트롤러 일 수 있습니다. 어레이 content 바인딩은 해당 어레이 컨트롤러의 arrangedObjects에 바인딩 될 수 있습니다. 그런 식으로 남겨두면 행렬의 셀은 각 Person 객체의 description에서 채워집니다. 그러나 행렬 컨트롤러 contentValues을 배열 컨트롤러 arrangedObjects과 모델 키 경로 fullName에 바인딩 할 수 있습니다.그런 다음 매트릭스 셀에 각 Person 개체의 전체 이름이 채워집니다.

매트릭스의 selectedObject 바인딩을 윈도우 컨트롤러의 속성에 바인딩하면 매트릭스 선택이 변경 될 때마다 해당 속성이 선택된 Person 개체로 설정됩니다. 원하는 경우 매트릭스의 contentObjects 바인딩을 어레이 컨트롤러 (arrangedObjects, 모델 키 경로 uniqueID)에 바인딩 할 수 있습니다. 이 경우 창 컨트롤러 속성은 선택한 Person 개체 자체가 아니라 uniqueID 속성으로 설정됩니다.

또는 매트릭스의 selectedIndex 바인딩을 컨트롤러 속성에 바인딩 할 수 있습니다. 윈도우 컨트롤러를 사용한다면 윈도우 컨트롤러의 속성을 직접 설정하여 매트릭스의 선택 인덱스를 나타낼 수 있습니다. 또는 배열 컨트롤러의 selectedIndex 속성에 바인딩 할 수 있습니다.이 경우 선택 항목은 어레이 컨트롤러에 "저장"됩니다.

+0

고마워. 내가 selectedIndex를 사용하고 모든 것이 좋습니다. – Bolic

0

당신은 "VALUE1"선택 수집 속성이나 방법으로 하나의 객체 인 경우, 어레이 컨트롤러의 선택에 결합함으로써 key-value coding (KVC) reference.

에 기재된 바와 같이 어떤 매개 변수를 사용하지 않는 키 패스 필요 바인딩 런타임은 valueForKeyPath:@"value1" 메소드를 호출합니다.

NSObject protocolperformSelector:withObject이 있지만 KVC protocol 또는 registering dependent keypaths 일부 해당 동작을 제공 할 수 있습니다 말했다 NSKeyValueBindingCreation protocol

에서 valueForKeyPath:withObject 같은 아무것도 없다 ...

+ (NSSet*) keyPathsForValuesAffectingValue1 
{ 
    return [NSSet setWithObjects:@"value2",nil]; 
} 

을 ... 그리고 그 것 value2가 변경 될 때마다 value1에 대한 바인딩이 다시 평가되는지 확인하십시오. 코멘트에 명확히로 질문에 응답