2013-03-15 6 views
0

다른 멤버의 제안에 따라 최근 프로젝트 일부를 다시 작성했습니다. 나는 이전에 어려움을 겪어 왔으며, 단지이 문제로 고생하는 데 몇 시간을 소비했다. 모든/모든 도움을 많이 주시면 감사하겠습니다.NSTableView tableView 호출시 모든 행을 변경합니다.

NSTableView에 NSMutableArray가있는 항목을 두 개 이상 추가하려고하면 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 이 이전의 모든 날짜 항목이 마지막으로 클릭 한 항목으로 변경되어 발생하는 것입니다. 모든 도움을 주시면 감사하겠습니다. objectValueForTableColumn에서

답변

0

방금 ​​

를 추가 하나마다 값을 덮어 쓰기하고

d.date = myRenamed;

+0

감사합니다. 그러나 그 주석에 대해 언급하면 ​​날짜에 아무 것도 할당되지 않습니다. myRenamed (수정 날짜)로 설정된 값을 가져와야합니다. – loopifnil

+0

새로 추가 된 날짜를 dateList에 저장하고 해당 객체를 사용하는 것이 어떨까요? 나는 당신이 Date 클래스에서 무엇을하는지 확신 할 수 없다. – Gary

+0

나는 그것을 줄 것이다. 개체를 저장하기 위해 내 옵션을 열어두고 싶었지만 날짜는 nsstring이 좋을 것입니다. – loopifnil

관련 문제