값 변환기가있는 바인딩에 의해 채워지는 팝업 버튼이 보이는 방식인지 여부는 알 수 없습니다. 이상하게 보입니다 (적어도 값 변환기 및 테이블 뷰에서 보았던 것과 관련하여) transformationValue : 메서드의 "value"매개 변수는 배열의 개별 문자열이 아니라 배열 컨트롤러에 바인딩 된 전체 배열입니다. 테이블 뷰를 사용하여이 작업을 수행하면 표에 표시된 각 행에 대해 변압기가 한 번 호출되고 "값"매개 변수는 내용 배열로 사용되는 전체 배열이 아닌 해당 행 및 열에 바인딩되는 객체입니다 어레이 컨트롤러의 경우.NSPopupButton 값 변환기가있는 바인딩
나는 이것을 테스트하는 매우 간단한 응용 프로그램을 가지고 있습니다. RDTransformer 클래스에서
+(void)initialize {
RDTransformer *transformer = [[RDTransformer alloc] init];
[NSValueTransformer setValueTransformer:transformer forName:@"testTransformer"];
}
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
self.theData = @[@{@"name":@"William", @"age":@"24"},@{@"name":@"Thomas", @"age":@"23"},@{@"name":@"Alexander", @"age":@"64"},@{@"name":@"James", @"age":@"47"}];
}
이있다 : 응용 프로그램 위임이있다 IB에서
+ (Class)transformedValueClass {
return [NSString class];
}
+(BOOL)allowsReverseTransformation {
return NO;
}
-(id)transformedValue:(id)value {
NSLog(@"%@",value);
return value;
}
, 나는 윈도우와 객체 목록에 어레이 컨트롤러에 NSPopupButton을 추가했다. 컨트롤러의 내용 배열은 App Delegate.theData에 바인딩되고 팝업 버튼의 내용 값은 값 변환기 인 testTransformer를 사용하여 Array Controller.arrangedObjects.name에 바인딩됩니다. 나는이 프로그램을 실행하면
는 transformedValue에서 로그 :
2012-09-19 20:31:39.975 PopupBindingWithTransformer[793:303] (
)
2012-09-19 20:31:40.019 PopupBindingWithTransformer[793:303] (
William,
Thomas,
Alexander,
James
)
이 내가 SO에 볼 수있는 다른 사람의 경험이 될 것 같지 않습니다 : 방법이입니다. 바인딩이나 밸류 트랜스 포머에서 내가 잘못하고있는 것이 있습니까?
그래, 나는 변압기가 팝업 버튼으로 작동하도록 비슷한 것을했다. 배열을 반환하고 처리하면 배열을 반환 할 수 있습니다. 나는 다음 며칠 동안 다른 것이 들어올 지 지켜 볼 것입니다. 그렇지 않다면 나는 당신의 대답을 받아 들일 것입니다. – rdelmar
와우, 고마워! ** 도대체 ** 어디에서 문서화되어 있습니까? 정말로, 행성에서 가장 가치있는 회사에 대한 정말 가난한 직업 .. – Jay