RestFull呼び出しのオブジェクトとしてカスタムクラス「サイズ」があります。結果は、NSArrayController によって制御される配列に入力されます。次に、TableView は IB でこのコントローラーにバインドされます。すべてがapectedとして機能します。私が達成するのは、サイズに基づいて NSViewCell の色を変更することです。例:サイズ「M」はレッド、「S」はグリーン、「XXL」はブラウンになります。
.h
@interface RecordSize : NSObject
@property (readwrite, retain) NSString *key;
@property (readwrite, retain) NSString *size;
-(id)initWithName:(NSDictionary *)row;
@end
.m
#import "RecordSize.h"
@implementation RecordSize
@synthesize key = _key, size = _size;
-(id)initWithName:(NSDictionary *)row {
self = [super init];
if (self) {
_key = [row valueForKey:@"id"];
_size = [row valueForKey:@"text"];
}
return self;
}
@end
デリゲート クラス コンストラクター:
- (id)init {
if (self) {
self = [super init];
//*********** TableViev
NSString * urlString = @"http://xxxxx/restfull/size/";
RestateC *restSize = [[RestateC alloc]initWithName:urlString];
//add Delegate
restSize.delegate = self;
NSArray* aTmp = [restSize syncronize];
NSMutableArray *thingSize = [[NSMutableArray alloc]init];
for (NSDictionary *row in aTmp)
{
RecordSize *item = [[RecordSize alloc] initWithName:row];
[thingsSize addObject: item ];
}
self.aRecordSize = thingsRecordSize;
_sizeTableView.delegate = self;
}
return self;
}
ビューベースのセルの NSTablecolumn のメソッド
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
NSTableCellView *result = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
if( [[tableColumn identifier] isEqual:@"AGONIA"] ) {
NSLog(@"IDENTITY %@", [tableColumn identifier]);
if ([[result.textField stringValue] isEqualToString :@"M"]) {
result.textField.textColor = [NSColor redColor];
}
if ([[result.textField stringValue] isEqualToString :@"S"]) {
result.textField.textColor = [NSColor greenColor];
}
if ([[result.textField stringValue] isEqualToString :@"XXL"]) {
result.textField.textColor = [NSColor brownColor];
}
}
else result.textField.textColor = [NSColor blackColor];
return result;
}
メソッドはデリゲートから正しく呼び出されましたが、ロジックは機能しません。
どんな助けでも大歓迎です。