NSTableview datasource issues
NSTableview datasource issues
- Subject: NSTableview datasource issues
- From: email@hidden
- Date: Sun, 20 Dec 2009 01:09:15 +0000
- Importance: Normal
I know this has been discussed before, but I have been going through the issue of reloadData and datasource methods not running. I cannot figure out what is going on with my datasource methods.
Everything is connected. But when on [segmentTableView reloadData], no datasource method is run.
After the application was running, I debugged the code and checked the classes of SelectorController and TableSource. They are all connected in runtime.For table view, I only connected it to SelectorController -> segmentTableView, and its dataSource to SelectorController -> segmentTableView. All of them are connected properly in runtime.In Log, when I print the datasource and delegate of SegmentTableView, it shows SelectorController.
This is troublesome as I have 4 other tables in the same application that are loaded properly through their dedicated datasources.
It is only in this table that nothing is working. What am I missing? Your help is invaluable.
Her is some of the relevant code:
// SelectorController.h
#import <Cocoa/Cocoa.h>
@classsegmentIndustry;
@interface SelectorController : NSObject {
NSMutableArray *segmentIndustryData;
IBOutletNSTableView *segmentTableView;
IBOutletNSArrayController *segmentDataController;
IBOutletNSButton *stockSelectButton;
intmodelRS;
}
-(void) insertObject:(segmentIndustry *) s inSectorDataAtIndex:(int)index;
-(IBAction) initializeSectorSegmentData:(id) sender;
@end
// SelectorController.m
#import "SelectorController.h"
#import "segmentIndustry.h"
#import "MyDocument.h"
NSDictionary *segmentDict;
@implementation SelectorController
- (id)init
{
self = [superinit];
if (self) {
// Add your subclass-specific initialization here.
// If an error occurs here, send a [self release] message and return nil.
segmentDict =[NSMutableDictionarydictionary];
[segmentDictretain];
}
return (self);
}
- (void)awakeFromNib
{
segmentIndustryData=[[NSMutableArrayalloc] init];
[segmentIndustryDataretain];
segmentDataController=[[NSArrayControlleralloc] init];
[segmentDataControllerretain];
}
//Load into TableView in the GUI
#pragma mark Table view dataSource methods
- (int) numberOfRowsInTableView:(NSTableView *) TableView
{
return [segmentIndustryDatacount];
}
-(id)tableView:(NSTableView *)aTableView
ObjectValueForTableColumn:(NSTableColumn *)aTableColumn
row:(int)rowIndex
{
NSString *identifier =[aTableColumn identifier];
segmentIndustry *stock =[segmentIndustryDataobjectAtIndex:rowIndex];
return [stock valueForKey:identifier];
}
-(void) tableView:(NSTableView *) aTableView
setObjectValue:(id)anObject
forTableColumn:(NSTableColumn *) aTableColumn
row:(int) rowIndex
{
NSString *identifier =[aTableColumn identifier];
//What stock?
segmentIndustry *stock =[segmentIndustryDataobjectAtIndex:rowIndex];
[stock setValue:anObject forKey:identifier];
//Set the value for the attribute named identifier
}
-(IBAction)initializeSectorSegmentData:(id) sender
{
segmentDict=[[MyDocumentgetSectorSegmentData:(id) sender] mutableCopy];
[segmentDictretain];
NSWindow *w =[segmentTableViewwindow];
[wmakeKeyWindow];
//Fill the table row by row;
int i=0;
NSMutableArray *aXtemp;
if ([segmentIndustryDatacount]>0) [segmentIndustryDataremoveAllObjects];
[[segmentDataControllercontent] removeAllObjects];
for (idkeyinsegmentDict)
{
aXtemp = [NSMutableArrayarrayWithArray:[(NSArray *)[segmentDictobjectForKey:key] mutableCopy]];
if ([(NSString *) [aXtemp lastObject] intValue]== modelRS) {
[aXtemp insertObject:(NSString*) keyatIndex:(NSUInteger)1];
segmentIndustry *s = [[segmentIndustryalloc] init];
[s setSegName:(NSString *)[aXtemp objectAtIndex:(NSUInteger) 0]];
[s setSegOther:(NSString *)[aXtemp objectAtIndex:(NSUInteger)1]];
[s setSegIndustry:(NSString*)[aXtemp objectAtIndex:(NSUInteger)2]];
[s setSegSector:(NSString *)[aXtemp objectAtIndex:(NSUInteger) 3]];
// Add it to the content array of 'stockDataController'
[segmentDataControlleraddObject:s];
[selfinsertObject: s inSectorDataAtIndex:(int)i];
++i;
}
}
//Re-sort (in case the user has sorted a column
[segmentDataControllerrearrangeObjects];
// Get the sorted array
NSArray *a = [segmentDataController arrangedObjects];
for ( i=0;i<[a count];++i) {
[segmentTableView editColumn:0 row:i withEvent:nil select:YES];
[segmentTableViewreloadData];
}
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden