• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
change the content of the datasource for a tableView from a different class
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

change the content of the datasource for a tableView from a different class


  • Subject: change the content of the datasource for a tableView from a different class
  • From: Martin Batholdy <email@hidden>
  • Date: Fri, 06 May 2011 01:21:03 +0200

Hi,

I have a singleton class that manages a tableView (and provides the datasource).

Now I would like to update this tableView from another class.

Since the class that manages the tableView is a singleton I don't have to initiate a new instance of that class.
So I thought there should be no problem to change the content of the datasource for the tableView and then update the tableView with [table reloadData]; from a different class.

I indeed can change the datasource (a mutable Array) but the reloadData command doesn't update the content of the table in the window.

What am I doing wrong?
Why has the [table reloadData]; command in the updateView-method no effect on the table when it is evoked from a different class (see updateTest.h)?

I tried to isolate the code from my main project;

This test-project contains three classes:
The one that is connected to the preferences.xib providing the datasource for the tableView – tableViewController.h
the tableview_testAppDelegate.h
and a class that tries to change the data datasource and tries to send a request to update the tableView – updateTest.h

I have a preference.xib file with a tableView that is connected to the preference-object (provides the datasource).


I would be really glad for any help!
I hope someone can understand my problem ... I am still a bloody beginner.




// Here the tableViewController gets invoked - a window with a table appears showing the content of an array with two dictionaries (the array is called content)

tableview_testAppDelegate.h
————————————————————
#import <Cocoa/Cocoa.h>
#import "tableViewController.h"

@interface tableview_testAppDelegate : NSObject <NSApplicationDelegate> {

	tableViewController *test;
}


@end


tableview_testAppDelegate.m
————————————————————
#import "tableview_testAppDelegate.h"
#import "tableViewController.h"
#import "updateTest.h"

@implementation tableview_testAppDelegate

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {

	test = [tableViewController sharedPrefsWindowController];
	[test showWindow:self];

	updateTest *deleteEntry;
	deleteEntry = [[updateTest alloc] init];
}

@end




// Here the tableViewController gets the an updateView-command – one element of the array gets deleted and the tableView gets an update command (with no effect)

updateTest.h
————————————————————

#import <Cocoa/Cocoa.h>
#import "tableViewController.h"

@interface updateTest : NSObject {

	tableViewController *update;
}

@end


updateTest.m
————————————————————

#import "updateTest.h"
#import "tableViewController.h"

@implementation updateTest

- (id) init {

	update = [tableViewController sharedPrefsWindowController];
	[update updateView];
	return self;
}

@end





tableViewController.h
————————————————————
#import <Cocoa/Cocoa.h>

@interface tableViewController : NSWindowController <NSToolbarDelegate> {

	IBOutlet NSTableView *table;
	NSMutableArray *content;

}


@property (assign) IBOutlet NSWindow *window;


+ (tableViewController *)sharedPrefsWindowController;
+ (NSString *)nibName;
- (int)numberOfRowsInTableView:(NSTableView *)tableView;
- (id)tableView:(NSTableView *)tableView
objectValueForTableColumn:(NSTableColumn *)tableColumn
			row:(int)row;
- (IBAction)tableViewSelected:(id)sender;

- (void)updateView;

@end


tableViewController.m
————————————————————

#import "tableViewController.h"

static tableViewController *_sharedPrefsWindowController = nil;

@implementation tableViewController


+ (tableViewController *)sharedPrefsWindowController
{
	if (!_sharedPrefsWindowController) {
		_sharedPrefsWindowController = [[self alloc] initWithWindowNibName:[self nibName]];
	}

	return _sharedPrefsWindowController;
}

- (void) dealloc {
	[super dealloc];
}

+ (NSString *)nibName
{
	return @"preferences";
}

-(void)awakeFromNib {

	NSDictionary *dict;

    dict = [NSDictionary dictionaryWithObjectsAndKeys: @"test",  @"title",  nil];

	content = [[NSMutableArray alloc] init];
	[content addObject:dict];
	[content addObject:dict];

	NSLog(@"content %@", content);
}


- (int)numberOfRowsInTableView:(NSTableView *)tableView
{
	return [content count];
}

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
{
	return [[content objectAtIndex:row] valueForKey:@"title"];
}

- (IBAction)tableViewSelected:(id)sender
{
	char row;
    row = [sender selectedRow];
	NSIndexSet * selected;
	selected = [[NSIndexSet alloc] init];
	selected = [sender selectedRowIndexes];
}

- (void)updateView {

	[content removeObjectAtIndex:0];
	[table reloadData];

	NSLog(@"updated content %@", content);

}

@end



_______________________________________________

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

  • Follow-Ups:
    • Re: change the content of the datasource for a tableView from a different class
      • From: Graham Cox <email@hidden>
    • Re: change the content of the datasource for a tableView from a different class
      • From: Quincey Morris <email@hidden>
  • Prev by Date: Re: Threading synchronization: does a primitive exists?
  • Next by Date: Re: change the content of the datasource for a tableView from a different class
  • Previous by thread: Re: Twitter and Oauth
  • Next by thread: Re: change the content of the datasource for a tableView from a different class
  • Index(es):
    • Date
    • Thread