开发者

Display image in NSTableView

I am creating a tableview and using NSDictionaryController.

My data comes from 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).

Now can any one explain me how i get all images but not their names in table?

I am new to cocoa development.

Any help will be appreciated..!!

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.

When i run app , it shows empty table without any my image and being freez. I can't even close it.

Display image in NSTableView

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

Display image in NSTableView

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 !

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜