Hey, I am reading the cocoa programming for mac os x third edition and in chapter 6 I got a problem when I try to make the tableView show data console tells error
I don't understand as I got those methods, code comes here:
AppController.h
AppController.m
Code:
2010-06-07 23:46:29.816 SpeakLine[14780:a0f] init
2010-06-07 23:46:29.920 SpeakLine[14780:a0f] *** Illegal NSTableView data source (<AppController: 0x200046040>). Must implement numberOfRowsInTableView: and tableView:objectValueForTableColumn:row:
I don't understand as I got those methods, code comes here:
AppController.h
Code:
//
// AppController.h
// SpeakLine
//
// Created by Samuli Lehtonen on 1.6.2010.
// Copyright 2010 Test. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface AppController : NSObject {
IBOutlet NSTextField *textField;
NSSpeechSynthesizer *speechSynth;
IBOutlet NSButton *stopButton;
IBOutlet NSButton *startButton;
IBOutlet NSTableView *tableView;
NSArray *voiceList;
}
-(IBAction)sayIt:(id)sender;
-(IBAction)stopIt:(id)sender;
@end
AppController.m
Code:
//
// AppController.m
// SpeakLine
//
// Created by Samuli Lehtonen on 1.6.2010.
// Copyright 2010 Test. All rights reserved.
//
#import "AppController.h"
@implementation AppController
-(id)init
{
[super init];
NSLog(@"init");
speechSynth = [[NSSpeechSynthesizer alloc] initWithVoice:nil];
[speechSynth setDelegate:self];
voiceList = [[NSSpeechSynthesizer availableVoices] retain];
return self;
}
-(int)numberOfRowsInTableView:(NSTableView *)tv
{
return [voiceList count];
}
-(id)tableView:(NSTableView *)tv objectValueForTableColumn:(NSTableColumn *)tableColumnrow:(int)row
{
NSString *v = [voiceList objectAtIndex:row];
return v;
}
-(void)speechSynthesizer:(NSSpeechSynthesizer *)sender
didFinishSpeaking:(BOOL)complete
{
NSLog(@"complete = %d, complete");
[stopButton setEnabled:NO];
[startButton setEnabled:YES];
}
-(IBAction)sayIt:(id)sender
{
NSString *string = [textField stringValue];
if ([string length] == 0) {
NSLog(@"String is zero lenght");
return;
}
[speechSynth startSpeakingString:string];
[stopButton setEnabled:YES];
[startButton setEnabled:NO];
}
-(IBAction)stopIt:(id)sender
{
[speechSynth stopSpeaking];
}
@end