Display image in NSTableView
I am creating a tableview and using NSDictionaryController
.
case.dict
file
I am using this code:
@interface MyClass : NSWindowController{
IBOutlet NSTableView *tableView;
IBOutlet NSDictionaryController *dictController;
IBOutlet NSArrayController *peopleList;
NSDictionary *currentPerson;
}
@property (retain) NSDictionary *currentPerson;
MyClass.m file
- (void)windowDidLoad
{
[super windowDidLoad];
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource: @"case" ofType: @"dict"];
NSArray *listFromFile = [NSArray arrayWithContentsOfFile: path];
[tableView setSortDescriptors:[NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"icon" ascending:YES] autorelease]]];
[peopleList addObserver:self forKeyPath:@"selectionIndexes" options:NSKeyValueObservingOptionNew context:nil];
if (listFromFile != nil)
{
[peopleList addObjects:listFromFile];
}
[peopleList setSelectionIndex:0];
[dictController bind:NSContentDictionaryBinding toObject:self withKeyPath:@"currentPerson" options:nil];
}
It works fine and table gives me image names which are stored in case.dict
file at index 0(ZERO)
.
EDIT : If i want to use something like
if (listFromFile != nil)
{
[peopleList addObjects:[NSImage ImageNAmed:listFromFile];
}
then what should i do?
Thanks in advance..!!
I can't get solution for this problem.
Can anyone please help me in this??I have drage NSImageCell
in my table column and also done binding with NSArrayController
.
It says something like this
2011-09-20 16:36:08.647 dictTable[1141:707] NSImageCell's object value must be an NSImage.
2011-09-20 16:36:08.651 dictTable[1141:707] (
0 CoreFoundation 0x00007fff92984986 __exceptionPreprocess + 198
1 libobjc.A.dylib 0x00007fff8eb4fd5e objc_exception_throw + 43
2 CoreFoundation 0x00007fff929847ba +[NSException raise:format:arguments:] + 106
3 CoreFoundation 0x00007fff92984744 +[NSException raise:format:] + 116
4 AppKit 0x00007fff9890e051 -[NSImageCell setObjectValue:] + 109
5 AppKit 0x00007fff98a5f261 -[NSValueBinder _adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:] + 901
6 AppKit 0x00007fff98ea7aee -[NSValueBinder updateTableColumnDataCell:forDisplayAtIndex:] + 145
7 AppKit 0x00007fff98ee730d -[_NSBindingAdaptor tableColumn:willDisplayCell:row:] + 112
8 AppKit 0x00007fff9890d948 -[NSTableView preparedCellAtColumn:row:] + 654
9 AppKit 0x00007fff9891e787 -[NSTableView _drawContentsAtRow:column:withCellFrame:] + 42
10 AppKit 0x00007fff9891ccbe -[NSTableView drawRow:clipRect:] + 1647
11 AppKit 0x00007fff9891c49b -[NSTableView drawRowIndexes:clipRect:] + 565
12 AppKit 0x00007fff9891a6f3 -[NSTableView drawRect:] + 1390
13 AppKit 0x00007fff98881768 -[NSView _drawRect:clip:] + 3758
14 AppKit 0x00007fff988af131 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1583
15 AppKit 0x00007fff988af55d -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 2651
16 AppKit 0x00007fff9887ed46 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 1032
17 AppKit 0x00007fff9887fffb -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 5821
18 AppKit 0x00007fff9887fffb -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 5821
19 AppKit 0x00007fff9887fffb -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 5821
20 AppKit 0x00007fff9887e23c -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 270
21 AppKit 0x00007fff9887964a -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 4755
22 AppKit 0x00007fff98872093 -[NSView displayIfNeeded] + 1676
23 AppKit 0x00007fff988717d3 _handleWindowNeedsDisplayOrLayoutOrUpdateConstrai开发者_开发百科nts + 648
24 CoreFoundation 0x00007fff92944647 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
This is my cases.dict file
Anyone please help me in this.
Generally it works like this - you have to drag NSImageCell from Library on to table column, in which you want to show image, and bind its value property to an image attribute of your controller object.
Hope this helps !
精彩评论