Witam
Mam problem.Chcę napisać prosty program korzystając ze środowiska XCode 4.Ma być małe okienko a na nim 3 rzeczy:
1) NSTextField
2) NSTableView
3) Button
Jest to zadanie z książki AArona Hillegasa Cocoa Programming...
Chodzi o to że w okienko 1) wpisuję tekst naciskam 3) i tekst powinien się pojawić na ostatnim miejscu w tabeli 2) i tak dalej dodajemy naciskamy tekst ląduje w tabelce.Problem w tym że nic nie ląduje.Widać że po naciśnięciu 3) kilkukrotnym tabelka się zmienia bo pojawia się slider z boku i zmniejsza się.
Oto moje klasy:
1a) DSAppDelegate - delegat aplikacji
2a) MyClass - table view data source (żródło dla tabelki)
powiązania są następujące:
MyClass
|
|--pole-->1) Text Field
|--tabelka-->2) Table View
|<--target--3) button
|<--datasource---2)Tabelka
MyClass header:
MyClass implementacja:Kod:// // MyClass.h // DS // // Created by APPLE on 11-05-22. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import Cocoa/Cocoa.h @interface MyClass : NSObject NSTableViewDataSource { @private IBOutlet NSTextField *pole; IBOutlet NSTableView *tabelka; NSMutableArray *items; } - (IBAction)dodajNowy:(id)sender; -(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView; -(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row; @end
Kod:// // MyClass.m // DS // // Created by APPLE on 11-05-22. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import "MyClass.h" @implementation MyClass - (id)init { self = [super init]; if (self) { // Initialization code here. items=[[NSMutableArray alloc] init]; } return self; } - (void)dealloc { [items release]; [super dealloc]; } - (IBAction)dodajNowy:(id)sender { if ([pole stringValue]) //to ma blokować dodawanie pustych tekstów ale nie działa :( { [items addObject:[pole stringValue]]; } [tabelka reloadData]; [tabelka setEnabled:YES]; } -(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { return [items count]; } -(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { NSString *v=[items objectAtIndex:row]; return v; } @end
Pomimo że nie wpisuję nic czasem w okienko 1) i nacskam button i tak tabela się powiększa nie wiem dlaczego.Zmienna items powinna się nie zwiąekszać po wprowadzeniu pustego łańcucha a jednak,ląduje w niej (w items) za każdym razem gdy nacisnę button coś nawet jak nie wpiszę nic w okienko.Dlaczego.Myślałem że to przyblokuję.
Dzięki za każdą wskazówkę.Pozdrawiam.




LinkBack URL
About LinkBacks
