Как правильно передать NSDate, используя раскадровку? - PullRequest
0 голосов
/ 27 января 2012

Я хочу передать NSDate из PickDateController в DetailViewController PickDateController У меня есть IBAction следующим образом:

-(IBAction)doneDate:(id)sender{

NSLog(@"Date Here DPC = %@", [datePicker.date description]); //This shows fine
dateLabel.text = [datePicker.date description]; //This also shows.

DetailViewController *controller = [[[DetailViewController alloc] init] autorelease];

NSDate *dateSel = datePicker.date;
[controller setDateSelected:dateSel]; //This DOES NOT go to DetailViewController
controller.dateSelected = dateSel; //This doesn't work either

[self.navigationController popViewControllerAnimated:YES];

}

Для такого дурачка, как я, чего мне не хватает? Как я должен написать - (void) setDateSelected {} на DetailViewController? Или это не проблема?

1 Ответ

1 голос
/ 27 января 2012

Учитывая, что между контроллерами существуют переходы, и DetailViewController сделал переход к PickDateController:

Если вы используете alloc/init, вы не получите экземпляр контроллера, созданный раскадровкой.Если между ними есть переход, вам не нужно создавать новый контроллер, а просто внедрить prepareForSegue в свой контроллер представления, чтобы создать «обратный канал» (чтобы передать информацию обратно, вы не можете создать новый переход обратно(они идут только «in», но не «back»): вам нужно создать своего рода PickDateControllerDelegate и свойство делегата на вашем PickDateController. Затем вы можете установить delegate для вашего вызова DetailViewController, вprepareForSegue метод вашего DetailViewController.

Теперь вы можете получить к нему доступ через self.delegate изнутри вашего PickDateController и, таким образом, сообщать о любой информации до того, как ее уволят / выскочит из стека навигации.1017 * можно и нужно также использовать для информирования вызывающего контроллера о том, что он может отклонить PickDateController (вместо отмены самого себя).

Beginning Storyboards, часть 2 - хороший справочник поделать это (вы можете использовать assign и retain свойства для weak и strong, если вы еще не используете ARC.

...