хорошо ...
NSInteger styleRows = [rvc.scoreTypeArray objectAtIndex:indexPath.row];
Это неправильно, потому что вы пытаетесь получить доступ к indexPath.row, который не определен в этом методе.IndexPath.row обычно используется в методах tableView, таких как
(tableView*)didSelectRowAt:(NSIndexPath*)indexPath
. Поэтому вам нужно будет передать значение indexPath.row из метода делегата tableView в качестве параметра в методе editDetails.
, но вына самом деле это не нужно ... вместо этого сделайте это:
в detailViewController
и editViewController
, создайте NSString *dateObject
и сделайте его из @property(nonatomic,assign).
Теперь в корневом контроллере представления didSelectRowAtIndexPath
, когда пользовательнажимает на строку
[dvc setDateObject:self.dateArray objectAtindex:indexPath.row];
, поэтому теперь detailViewController
содержит ссылку на исходную дату в объекте dateObject.любое внесенное здесь изменение также изменит дату в массиве date rootController.
Поэтому, когда пользователь нажимает кнопку редактирования, вызовите
-(IBAction)editDetails:(id)sender {
editViewController *evc = [[editViewController alloc] initWithNibName:@"editViewController" bundle:nil];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:evc];
[evc setDateObject:self.dateObject];
[[self navigationController] presentModalViewController:navigationController animated:YES];
[navigationController release];
[evc release];
}
Теперь вы снова передали оригиналdateObject для editViewController.в его viewDidLoad установите textField, и когда пользователь редактирует и нажимает «Готово», замените dateObject в editViewController на измененный dateObject.Помните, что это оригинальный dateObject, который был передан в качестве ссылки от rootViewController.поэтому вы также заменили его в dateArray rootViewController.теперь вам просто нужно знать, когда вы возвращаетесь из detailViewController в rootViewController и выполняете [table reloadData];
tadan !!!