0

別のメンバーの提案で、最近のプロジェクトの一部を書き直しました。以前に発生していた問題を修正しましたが、これに数時間苦労しました。どんな/すべての助けも大歓迎です。

NSMutableArray を使用して NSTableView に複数のアイテムを追加しようとすると、dateList のすべてのエントリが最新のエントリに置き換えられます。これが私の.mファイルです。「d オブジェクトの日付を %@ に設定する」で設定した NSLog は、日付を追加し続けると n 回目に呼び出されます。

 @implementation TableViewController
 @synthesize myDatePicker;
 NSString *myRenamed = @"CHANGED";
 int test = 0;


 - (id) init{

self = [super init];
if (self) {
    dateList = [[NSMutableArray alloc] init];
}   
return self;
 }


 -(void) awakeFromNib{
 [myDatePicker setDateValue: [NSDate date]];
 [self.myDatePicker sendActionOn:NSLeftMouseDown];
 NSLog(@"Hello from TableView at time: %@", myDatePicker.dateValue);
 }


- (IBAction)datePickerAction:(id)sender{
 test = 0;
[self getSetDate];
NSLog(@"getSetDate Finished with date %@", myRenamed);
[self myTableAdd];
NSLog(@"datePickerAction Finished");

 }


 - (void)getSetDate{

NSLog(@"Entering getSetDate%@", (myDatePicker.dateValue));

//set date to local & set format set on xib start
NSDate *myNewDate = [myDatePicker dateValue];
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"YYYYMMdd"];
myRenamed = [dateFormat stringFromDate:myNewDate];
NSLog(@"Ending getSetDate with %@",myRenamed);




  }


 - (NSInteger) numberOfRowsInTableView:(NSTableView *)tableView{

return [dateList count];
 }

 -(id) tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row{

Date *d = [dateList objectAtIndex:row];
NSString *identifier = [tableColumn identifier];

d.date=myRenamed;
[d setDate:d.date];
NSLog(@"setting d object date to %@", d.date);
test ++;
return [d valueForKey:identifier];

 }


 - (void) myTableAdd{
NSLog(@"Called myTableAdd");

[dateList addObject:[[Date alloc] init]];
[tableview reloadData];

 }

画像: http://cl.ly/NaEu これが起こることで、以前のすべての日付エントリが最後にクリックされたエントリに変更されます。すべての助けに感謝します。

4

1 に答える 1

0

objectValueForTableColumn では、追加したばかりの値ですべての値を上書きしています

d.date=myRenamed;

于 2013-03-15T03:26:04.380 に答える