Представление становится модальным, когда оно отображается с использованием presentModalViewController: animated. Вы можете передать модель для редактирования перед представлением модального вида.
DetailViewController dvc = ...;
dvc.model = model;
dvc.delegate = self; // if you want to use a delegate pattern.
[self presentModalViewController:dvc animated:YES];
Поскольку модель, которую вы хотите редактировать, доступна в контроллере модального представления, вы можете установить значения в viewDidLoad. На платформе iOS нет привязки данных, что означает, что вам необходимо обновить вид и модель вручную.
- (void)viewDidLoad {
[super viewDidLoad];
self.someTextField.text = self.model.someText;
}
При работе с модальным представлением необходимо учитывать, что вы должны предоставить способ отклонить его. Например. с помощью навигационной панели сверху с кнопками Отмена и Сохранить. Увольнение модального контроллера представления выполняется с помощью:
[self dismissModalViewControllerAnimated:YES];
Можно отклонить модальное представление из контроллера модального представления, но это также означает, что такой модальный контроллер должен быть в состоянии сохранить данную модель. Я лично использовал бы обратный вызов к представляемому контроллеру, давая ему знать, чтобы сохранить или отменить, а также обрабатывая отклонение модального представления. Это можно сделать с помощью шаблона делегата. Поэтому, когда пользователь нажимает Сохранить, вы можете обновить модель, а затем уведомить делегата.
- (IBAction)save:(id)sender {
self.model.someText = self.someTextField.text;
[self.delegate detailViewControllerDidSave:self];
}
А в докладчике есть такой метод:
-(void)detailViewControllerDidSave:(DetailViewController *)controller {
// save the model
[self dismissModalViewControllerAnimated:YES];
}