我正在讀一些書,我偶然發現了這個東西。 以我的ViewController在用戶點擊時改變以下 代碼日期按鈕被稱爲:更改日期沒有反映在以前的視圖
- (IBAction)changeDate:(id)sender {
DateViewController *vc = [[DateViewController alloc] init];
[vc setItem: item];
[[self navigationController] pushViewController:vc animated:YES];
}
item
是一個指針指向一個自定義類對象,其具有NSDate *
類型的ivar;
現在,裏面DateViewController
當用戶已經挑選新的日期,並希望 導航到以前的觀點,我有以下代碼:
- (void)viewWillDisappear:(BOOL)animated
{
NSLog(@"%@", [datePicker date]);
item.dateCreated = [datePicker date]; // get selected date
}
此代碼的工作,當用戶從上面的代碼變化可以追溯到反映 在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
即使我將最後一個代碼片段中的行更改爲:'userDate = [datePicker date];'from self.userDate = [datePicker date];' - 當用戶回到此視圖時,currentItem的日期仍未更新。 .. – user2054339