S
Schulz89
Mitglied
Thread Starter
- Dabei seit
- 14.07.2011
- Beiträge
- 30
- Reaktionspunkte
- 0
Hi,
ich bin gerade dabei bisschen in Thema Programmieren einzusteigen.
Nun habe ich mit dieses Buch gekauft und wollte anfangen, doch leider komme ich an einem Punkt nicht weiter das Beispiel-Programm möchte einfach nicht so wie es soll.
Ich wollte ein tableView erstellen, wo die möglichen verschiedenen Stimmen des NSSpeechSynthesizer drin sind, ich habe alles so abgeschrieben wie es im Buch steht, aber ich sehe leider keine Stimmen im tableView hier ist der Code (das Programm startet, aber das tableVIew ist leer)
Ein Fehler zeigt er an habe ich als Kommentar unten dazugeschrieben an der stelle mit "self"...
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>{
NSArray *_voices;
NSSpeechSynthesizer *_speechSynth;
}
@property (assign) IBOutlet NSWindow *window;
@property (weak) IBOutlet NSTextField *textField;
@property (weak) IBOutlet NSTableView *tableView;
-(IBAction)startid)sender;
-(IBAction)stopid)sender;
@end
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
@synthesize textField = textField;
@synthesize tableView = tableView;
- (id)init
{
self = [super init];
if (self) {
NSLog(@"init");
_speechSynth = [[NSSpeechSynthesizer alloc] initWithVoice:nil]; // der Fehler!!! Sending AppDelegate *_strong to parameter of incompatible type id<NSSpeechSynthesizerDelegate>
[_speechSynth setDelegate:self];
_voices = [NSSpeechSynthesizer availableVoices];
}
return self;
}
- (void)applicationDidFinishLaunchingNSNotification *)aNotification
{
// Insert code here to initialize your application
}
- (IBAction)startid)sender{
NSString *string = [textField stringValue];
if ([string length] == 0) {
NSLog(@"string from %@ is of zero-length", textField);
return;
}
[_speechSynth startSpeakingString:string];
NSLog(@"Have started to say: %@", string);
}
- (IBAction)stopid)sender{
NSLog(@"stopping"),
[_speechSynth stopSpeaking];
}
- (NSInteger)numbersOfRowsNSTableView *)tv
{
return (NSInteger)[_voices count];
}
- (id)tableViewNSTableView *)tv
objectValueForTableColumnNSTableColumn *)tableColumn
rowNSInteger)row
{
NSString *v = [_voices objectAtIndex:row];
return v;
}
- (void)tableViewNSNotification *)notification{
NSInteger row = [tableView selectedRow];
if (row == 1) {
return;
}
NSString *selectedVoice = [_voices objectAtIndex:row];
[_speechSynth setVoice:selectedVoice];
NSLog(@" new voieces %@", selectedVoice);
}
@end
Zu dem habe ich in der .xib im tableView ein Rechtsklick gemacht und DataSource und Delegate zu der App Delegate gezogen.
Ich hoffe ihr könnt mir helfen!
Danke.
mfg Christian
ich bin gerade dabei bisschen in Thema Programmieren einzusteigen.
Nun habe ich mit dieses Buch gekauft und wollte anfangen, doch leider komme ich an einem Punkt nicht weiter das Beispiel-Programm möchte einfach nicht so wie es soll.
Ich wollte ein tableView erstellen, wo die möglichen verschiedenen Stimmen des NSSpeechSynthesizer drin sind, ich habe alles so abgeschrieben wie es im Buch steht, aber ich sehe leider keine Stimmen im tableView hier ist der Code (das Programm startet, aber das tableVIew ist leer)
Ein Fehler zeigt er an habe ich als Kommentar unten dazugeschrieben an der stelle mit "self"...
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>{
NSArray *_voices;
NSSpeechSynthesizer *_speechSynth;
}
@property (assign) IBOutlet NSWindow *window;
@property (weak) IBOutlet NSTextField *textField;
@property (weak) IBOutlet NSTableView *tableView;
-(IBAction)startid)sender;
-(IBAction)stopid)sender;
@end
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
@synthesize textField = textField;
@synthesize tableView = tableView;
- (id)init
{
self = [super init];
if (self) {
NSLog(@"init");
_speechSynth = [[NSSpeechSynthesizer alloc] initWithVoice:nil]; // der Fehler!!! Sending AppDelegate *_strong to parameter of incompatible type id<NSSpeechSynthesizerDelegate>
[_speechSynth setDelegate:self];
_voices = [NSSpeechSynthesizer availableVoices];
}
return self;
}
- (void)applicationDidFinishLaunchingNSNotification *)aNotification
{
// Insert code here to initialize your application
}
- (IBAction)startid)sender{
NSString *string = [textField stringValue];
if ([string length] == 0) {
NSLog(@"string from %@ is of zero-length", textField);
return;
}
[_speechSynth startSpeakingString:string];
NSLog(@"Have started to say: %@", string);
}
- (IBAction)stopid)sender{
NSLog(@"stopping"),
[_speechSynth stopSpeaking];
}
- (NSInteger)numbersOfRowsNSTableView *)tv
{
return (NSInteger)[_voices count];
}
- (id)tableViewNSTableView *)tv
objectValueForTableColumnNSTableColumn *)tableColumn
rowNSInteger)row
{
NSString *v = [_voices objectAtIndex:row];
return v;
}
- (void)tableViewNSNotification *)notification{
NSInteger row = [tableView selectedRow];
if (row == 1) {
return;
}
NSString *selectedVoice = [_voices objectAtIndex:row];
[_speechSynth setVoice:selectedVoice];
NSLog(@" new voieces %@", selectedVoice);
}
@end
Zu dem habe ich in der .xib im tableView ein Rechtsklick gemacht und DataSource und Delegate zu der App Delegate gezogen.
Ich hoffe ihr könnt mir helfen!
Danke.
mfg Christian