Я строю приложение To-Do-List, который использует следующие объекты:Как заменить строку на строку неизвестной длины?
- NSTexField для ввода данных
- NSTableView для отображения данных (только строковые объекты)
- NSButton, что при нажатии будет добавьте содержимое NSTextField в NSTableView для отображения.
Что я хочу сделать, это заменить любую строку в любой строке в NSTableView другой строкой. Например, можно сказать, что пользователь вводит следующее.
- мыть машину
- купить Starcraft 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 «в строке», но я не мог понять, как это сделать. Теперь это работает, выбирая строку, которую вы хотите отредактировать, а затем поместив новую строку в 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;
}
Так что мне нужно добавить еще одну таблицу реализации: setObjectValue: forTableColumn: строка в дополнение к той, которая у меня уже есть? – lampShade
Моя ошибка, метод, о котором вы говорили, отличается. – lampShade