NSPopupButton,업데이트에 따라 다른 NSPopupButton
-
20-09-2019 - |
문제
를하고자하는 도시/국가 선택을 사용하여 2NSPopupButtons.하나 팝업 버튼을 포함됩니다 첫 번째 부분은 예:영국,두 번째 포함됩니다 두 번째 부분은 예:런던 그래서 도시 전체가/국가 콤보를 읽을 것이다:영국 런던 그러나 저는 두 번째 부분이 업데이트될 때 첫 번째 부분은 선택,예를 들어,는 경우 런던,선택 가능한 선택에서 두 번째 popupbutton 될 것입니다 런던,버밍엄,맨체스터 etc., 는 경우 이탈리아의 선택되었다,다음 두 번째 popupbutton 표시됩니다 나라와 같은 베니스,밀라노,etc.
그 후,나는 저장하고 이 데이터를 하나의 속성에서 핵심 데이터입니다.그래서에 가입하는 두 가지를 함께 저장"영국 런던에서"속성"이라는 장소".
할 수 있었 사람을 나에게 어떤 도움을 하는 방법으로 이를 구현하십시오?
감사합니다!
해결책
어떻게 당신은 귀하의 국가/도시 데이터를 저장(그들은 또한에서 핵심 데이터는)?를 결정하는 세부 사항의 일부를 여기에,그러나 기본적인 아이디어가 사용하는 코코아인 링크 각 NSPopUpButton 의 콘텐츠 NSArrayController.
코코아인 지 않은 정말 단순하지만,그들은 정말로 마법처럼 작동되면 모든 것을 얻을 올바르게 구성되었습니다.문제는 없을 때 일을 제대로 구성되어,그것의 하드를 결정하는 무엇이 잘못된 것입니다.
여기에 일반적인 설정:
을 구성하는 첫 번째 NSArrayController 야 할 내용이 국가의 데이터입니다.를 사용하면 핵심 데이터,당신은 그것을 전달하고 관리되는 개체텍스트와 it 준비하는 자신의 데이터 Country
entity.그렇지 않으면,당신은 바인딩하는 해당 콘텐츠 기존의 배열체를 구현하는 키 값을 준수한 코딩 의 방법에 액세스하지 못하게 연결된 도시입니다.를 사용하여 핵심 데이터에 대한 데이터 소스는 여기에서 당신의 인생을 더 쉽게 만들 것입니다.
그리고 당신은 바인딩 두 번째 NSArrayController 을 얻을에서 콘텐츠 selection
의 첫째,적절한 키의 경로를 당신의 도시입니다.핵심 데이터,이 될 것입니다 Content Set
(기 때문에 정렬되지 않은).
편집: Bah,댓글 필드를 완전히 쓸모 없습니다.여기에 적절한 응답을 당신의 첫 번째 논평:
모델 이 관계에서 핵심 데이터,당신을 설정하는 모형을 다음과 같이:
하는 것이 중요 참고로 나는 나의 엔티티는 사용자 정의 클래스를 제공합니다(MBCountry
고 MBCity
).요청에 의해 엑스 코드를 생성한 클래스를 위한 당신은(엔터티를 선택하고,새로운 파일을 선택하고 코코아래->관리 개체 클래스)를 사용할 수 있습니다 진정 접근법(대만 valueForKey:
).(옆으로,정말 가치 Rentzsch 의 Mogenerator 이 작업을 자동으로 수행하는 당신을 위해서 모든 저장합니다.)
지금 하는 귀하의 모델은 설정을 채울 수 있습니다 데이터를 저장 다음과 같다:
NSArray *countryList = ...; /* Get your array of country names */
for (NSString *countryName in countryList) {
MBCountry *aCountry = (MBCountry *)[NSEntityDescription insertNewObjectForEntityForName:@"MBCountry" inManagedObjectContext:context];
[aCountry setName:countryName];
NSArray *cityList = ... /* Get your array of city names for this country */
for (NSString *cityName in cityList) {
MBCity *aCity = (MBCity *)[NSEntityDescription insertNewObjectForEntityForName:@"MBCity" inManagedObjectContext:context];
[aCity setName:cityName];
[aCountry addCitiesObject:aCity];
}
}
핵심 데이터는 정말 방법 잔니다 여기에.그러나,그것의 소리처럼 사용할 핵심 데이터의 다른 섹션에서 귀하의 프로그램,그래서 이들에게 학습의 기회입니다.그것은 매우 가파른 학습 곡선(확실히 하나의 까다로운 측면의 코코아 API)지만,그것은 드리겠습니다.다만 꾸준히 하는 것을 계속하십시오!