我建立一個任務 - 列出應用程序,它使用下列對象:如何用一個未知長度的字符串替換一個字符串?
- NSTexField數據錄入
- NSTableView的顯示數據(只是字符串對象)
- NSButton,單擊時會將NSTextField的內容添加到NSTableView以供顯示。
我想要做的是用另一個字符串替換NSTableView中任何行中的任何給定的字符串。例如,讓我們說用戶輸入以下內容。
- 洗車
- 購買星際爭霸II
- 升級顯卡。
但是,然後在第三行想要改變 - 建立一個新的電腦。我怎樣才能做到這一點?以下是我迄今爲止:
#import "AppController.h"
@implementation AppController
-(id)init
{
[super init];
[tableView setDataSource:self];
[tableView setDelegate:self];
array = [[NSMutableArray alloc ] init];
//NSLog(@"this is my delegate %@",[tableView delegate]);
return self;
}
-(IBAction)addItem:(id)sender
{
inputString = [textField stringValue];
[array addObject:inputString];
[tableView reloadData];
return;
}
- (int)numberOfRowsInTableView:(NSTableView *)aTableView
{
return [array count];
}
- (id) tableView:(NSTableView *)aTableView
objectValueForTableColumn:(NSTableColumn *)aTableColumn
row:(int)rowIndex
{
//NSLog(@"this is the object %@",[array objectAtIndex:rowIndex]);
return [array objectAtIndex:rowIndex];
}
-(IBAction) replaceItem:(id)sender
{
NSLog(@"The selected row %d",[tableView selectedRow]);
NSLog(@"The objectAtIndex is: %@",[array objectAtIndex:[tableView selectedRow]]);
[array replaceObjectAtIndex:[tableView selectedRow ] withObject: @"Micheal jordan"];
[tableView reloadData];
return;
}
- (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)
aTableColumn row:(NSInteger)rowIndex
{
return YES;
}
@end
附錄: 我添加了一個新的方法的建議。它現在「有效」,但不是我想要的方式。我想編輯NSTableView中的條目「in line」,但我無法弄清楚如何去做。現在通過選擇你想要編輯的行然後把NSTextField中的新字符串放到NSTableView中。
#import "AppController.h"
@implementation AppController
-(id)init
{
[super init];
[tableView setDataSource:self];
[tableView setDelegate:self];
array = [[NSMutableArray alloc ] init];
//NSLog(@"this is my delegate %@",[tableView delegate]);
return self;
}
-(IBAction)addItem:(id)sender
{
inputString = [textField stringValue];
[array addObject:inputString];
[tableView reloadData];
return;
}
- (int)numberOfRowsInTableView:(NSTableView *)aTableView
{
return [array count];
}
- (id) tableView:(NSTableView *)aTableView
objectValueForTableColumn:(NSTableColumn *)aTableColumn
row:(int)rowIndex
{
//NSLog(@"this is the object %@",[array objectAtIndex:rowIndex]);
return [array objectAtIndex:rowIndex];
//return [array replaceObjectAtIndex:[tableView selectedRow ] withObject: @"Micheal jordan"];
}
- (void)tableView:(NSTableView *)aTableView
setObjectValue:(id)anObject
forTableColumn:(NSTableColumn *)aTableColumn
row:(NSInteger)rowIndex
{
[array replaceObjectAtIndex:[tableView selectedRow] withObject:[textField stringValue]];
return;
}
- (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)
aTableColumn row:(NSInteger)rowIndex
{
return YES;
}
所以我需要添加另一個實現tableView:setObjectValue:forTableColumn:row除了我已經有的? – lampShade 2010-08-05 16:40:57
我提到的方法不同,我的錯誤。 – lampShade 2010-08-05 17:16:09