일부 책을 읽고 있는데이 문제가 발생했습니다. 사용자가 클릭이 코드 다음 날짜 버튼을 변경 제의 ViewController에서 가 호출됩니다 :변경 날짜가 이전보기에 반영되지 않았습니다.
- (IBAction)changeDate:(id)sender {
DateViewController *vc = [[DateViewController alloc] init];
[vc setItem: item];
[[self navigationController] pushViewController:vc animated:YES];
}
item
유형 NSDate *
의 바르가있는 사용자 정의 클래스 객체에 대한 포인터입니다;
- (void)viewWillDisappear:(BOOL)animated
{
NSLog(@"%@", [datePicker date]);
item.dateCreated = [datePicker date]; // get selected date
}
이 코드는 작동하고 사용자가 코드 변경 위에서 되돌아 갈 때 을 반영 : 사용자가 이미 새로운 날짜를 포착하고 이전보기로 이동합니다 를 원 DateViewController
안에, 내가 다음 코드 한 지금
, item
데이터 구조와 사용자는 새로운 날짜를 볼 수 있습니다. 그러나 위의 코드를 다음 코드로 변경하면 더 이상 작동하지 않습니다.
- (IBAction)changeDate:(id)sender {
DateViewController *vc = [[DateViewController alloc] init];
vc.userDate = currentItem.dateCreated;
[[self navigationController] pushViewController:vc animated:YES];
}
DateViewController : 당신이 그것을 포함 된 날짜를 변경할 수 있기 때문에 첫 번째 경우에
- (void)viewWillDisappear:(BOOL)animated
{
NSLog(@"%@", [datePicker date]);
self.userDate = [datePicker date];
}
네,하지만'self.userDate'는 실제로'currentItem.dateCreated;를 가리 킵니다 - 그렇지 않습니까? (두 번째 - 마지막 코드 스 니펫에서 할당 때문에). – user2054339
그것은 동일한 객체를 가리 키지 만, 'self'에 속성을 설정하면 원본을 편집하지 않고 속성이 참조하는 내용 만 변경하면됩니다. – Wain
마지막 코드 조각의 줄을'user.userDate = [datePicker date];'self.userDate = [datePicker date];에서'userDate = [datePicker date];'로 변경하더라도 사용자가이보기로 돌아올 때 currentItem의 날짜는 여전히 업데이트되지 않습니다. .. – user2054339