我不知道我用彈出式按鈕看到的與值轉換器綁定的方式是否應該如此 - 我看到的不尋常的事情(至少尊重我看到的使用值轉換器和表視圖)是因爲transformedValue:方法中的「value」參數是綁定到數組控制器的整個數組,而不是數組中的單個字符串。當我使用表視圖完成此操作時,將爲表中的每個顯示行調用轉換器一次,而「value」參數是綁定到該行和列的任何對象,而不是充當內容數組的整個數組爲陣列控制器。帶有值轉換器的NSPopupButton綁定
我有一個非常簡單的應用程序來測試這個。在應用程序委託有這樣的:
+(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"}];
}
在RDTransformer類是這樣的:
+ (Class)transformedValueClass {
return [NSString class];
}
+(BOOL)allowsReverseTransformation {
return NO;
}
-(id)transformedValue:(id)value {
NSLog(@"%@",value);
return value;
}
在IB,我加入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