Objective c 如何用长度未知的字符串替换字符串?
我正在构建一个待办事项列表应用程序,它使用以下对象:Objective c 如何用长度未知的字符串替换字符串?,objective-c,nstableview,Objective C,Nstableview,我正在构建一个待办事项列表应用程序,它使用以下对象: 用于数据输入的NSTexField NSTableView显示数据(仅字符串对象) NSN按钮,单击该按钮将NSTextField的内容添加到NSTableView中以供显示 我要做的是用另一个字符串替换NSTableView中任何行中的任何给定字符串。 例如,假设用户输入以下内容 洗车 购买星际争霸2 升级视频卡 但是,在第三排,我想改变这一点,建立一个新的个人电脑。我如何才能做到这一点?以下是我到目前为止的情况: #import "App
#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:shouldEditTableColumn:row:
的默认值是YES
,因此您不需要实现它,尽管稍后您可能会选择限制对某些行/列的编辑,因此可以将其保留在那里
除了您所做的之外,您还缺少一个实现。如果您实现了这一点,并用给定的对象值替换数组中的项,那么一切都应该正常。您甚至不需要重新加载数据
编辑:我所描述的内容允许人们在表视图中就地编辑内容。然后,只需添加新项目即可使用您的按钮。首先,
-tableView:shouldEditTableColumn:row:
的默认值为YES
,因此您不需要实现它,尽管您以后可能会选择限制某些行/列的编辑,因此可以将其保留在那里
除了您所做的之外,您还缺少一个实现。如果您实现了这一点,并用给定的对象值替换数组中的项,那么一切都应该正常。您甚至不需要重新加载数据
编辑:我所描述的内容允许人们在表视图中就地编辑内容。然后,只需要您的按钮来添加新项目。因此,我需要在我已有的实现tableView:setObjectValue:forTableColumn:row之外添加另一个实现tableView:setObjectValue:forTableColumn:row?我的错误您提到的方法不同。因此,我需要在我已有的实现tableView:setObjectValue:forTableColumn:row之外添加另一个实现tableView:setObjectValue:forTableColumn:row?我的你提到的方法是不同的。