Lorsque je sélectionne une ligne dans NSTableView
il n'exécute pas le code de tableViewSelectionDidChange
méthode. J'avais mis des points d'arrêt dans cette méthode et elle n'est même pas entrée dans la méthode.
Des idées ? Est-ce que j'ai oublié quelque chose dans mon initialisateur ?
PersonController.h
#import <Foundation/Foundation.h>
@interface Person : NSObject {
IBOutlet NSTableView *personsTable;
NSMutableArray *personsList;
NSMutableArray *personCollection;
IBOutlet NSTextField *selectedPersonName;
IBOutlet NSTextField *selectedPersonGender;
@private
}
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification;
@end
PersonController.m
#import "PersonController.h"
#import "Person.h"
@implementation PersonController
- (id)init
{
self = [super init];
if (self) {
personsList = [[NSMutableArray alloc] init];
Person *person = [[Person alloc] init];
// Create person 1
person.name = @"Bob";
person.gender = @"male";
// Append to array
[personsList addObject:person];
[person release];
// Create person 2
person = [[Person alloc] init];
person.name = @"Fred";
person.gender = @"Unknown";
// Append to array
[personsList addObject:person];
[person release];
[personsTable reloadData];
}
return self;
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return [personsList count];
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
Person *person = [personsList objectAtIndex:row];
NSString *identifier = [tableColumn identifier];
return [person valueForKey:identifier];
}
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification
{
NSInteger selectedRow = [personsTable selectedRow];
if (selectedRow == -1)
{
// these should be localized, but use string constants here for clarity
[selectedPersonName setStringValue:@"No selection"];
[selectedPersonGender setStringValue:@"No selection"];
}
else
{
Person *selectedPerson = [personCollection objectAtIndex:selectedRow];
[selectedPersonName setStringValue:[selectedPerson name]];
[selectedPersonGender setStringValue:[selectedPerson gender]];
}
}
- (void)dealloc
{
[super dealloc];
}
@end