PDA

View Full Version : Cannot get NSTableView to reload!




DavidLeblond
Sep 24, 2004, 09:15 PM
I have a tableview that is bound to an array controller. I can add records just fine by using the array controller's add: action. However there is one part in the code that I wish to add additional records. I can add the records to the array controller just fine, but the NSTableView will not add. After I add the records, I can run the "add:" action and the tableview will reload and only then I can see the added records.

Here is a snippet of my code:


Author *newAuth;
newAuth = [[Author alloc] init];
[[newAuth properties] setValue:@"first" forKey:@"firstname"];
[[newAuth properties] setValue:@"lost" forKey:@"lastname"];
[_authors addObject:newAuth];

[newAuth release];
[authorsView reloadData];


authorsView is an Outlet connected to my table that is bound to the array controller (_authors, which is an array of Author)

Any ideas? I have tried everything to try to get that thing to refresh!



iMeowbot
Sep 25, 2004, 03:46 AM
Are you saying that the [authorsView reloadData] isn't doing anything?

DavidLeblond
Sep 25, 2004, 09:41 AM
Are you saying that the [authorsView reloadData] isn't doing anything?

Exactly... just breezes right by it. No errors, no warnings, no nothing.

DavidLeblond
Sep 25, 2004, 05:49 PM
I also noticed this about my Interface, where I connected the TableViews to the controller:

http://davidleblond.dynalias.com/lj/screen_capture_inspector.jpg

Notice the indexes of the NSTableViews are (,) and ()... why is that? Could that be causing this? :confused:

Fukui
Sep 25, 2004, 06:31 PM
Try removing [newAuth release]; and see what happens...

DavidLeblond
Sep 25, 2004, 06:56 PM
Doesn't work.

I should also add, that after adding the newAuth object to the tableView I can get it to appear by changing the sort order on the view by clicking the column headers.

iMeowbot
Sep 25, 2004, 07:52 PM
Oh, I just thought of something. What happens if you send a setNeedsDisplay message right after the reload? I'm thinking that it doesn't visually update without a little kick so that a series of adds won't be too slow.

[I'll also note that others have encountered this problem if an NSTableView's controller happens to be subclassed from NSDocument.]

DavidLeblond
Sep 25, 2004, 08:08 PM
Oh, I just thought of something. What happens if you send a setNeedsDisplay message right after the reload? I'm thinking that it doesn't visually update without a little kick so that a series of adds won't be too slow.

That didn't work. Good guess though!

There's gotta be something I'm not doing right, I just wish I could figure out what! :mad:

iMeowbot
Sep 25, 2004, 08:21 PM
'Fraid of that. tableviews are definitely buggy. Lots of stuff here (http://www.cocoadev.com/index.pl?NSTableView) on random problems epople have with them and a few workarounds. Good luck (and do tell us what eventually works!)

DavidLeblond
Sep 25, 2004, 10:22 PM
I also asked on CocoaDev and got an answer.

For the curious... (http://www.cocoadev.com/index.pl?NSTableViewNotReloadingCorrectly)

iMeowbot
Sep 25, 2004, 11:16 PM
Grrrrr. Since Openstep is already a published spec, would it really kill them to show the source code for Cocoa? The documentation they supply really doesn't cut it.