prepareForSegue 未在 tableView 中传递适当的行
prepareForSegue not passing appropriate row in tableView
我有一个 Table 带课程的视图,想在详细视图控制器中传递课程名称。但它总是通过第一行。
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewRowAction *edit = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"edit" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){
[self performSegueWithIdentifier:@"editLesson" sender:nil];
}];
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"editLesson"]) {
NSManagedObject *selectedLesson = [self.lessons objectAtIndex:[[self.tableView indexPathForSelectedRow] row]];
EditLessonViewController *destViewController = segue.destinationViewController;
destViewController.lesson = selectedLesson;
}
}
您应该在 performSegue 中将 indexPath 作为发件人传递。
有你的代码:
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewRowAction *edit = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"edit" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){
[self performSegueWithIdentifier:@"editLesson" sender:indexPath];
}];
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"editLesson"]) {
NSIndexPath* indexPath = (NSIndexPath*)sender;
NSManagedObject *selectedLesson = [self.lessons objectAtIndex:indexPath.row];
EditLessonViewController *destViewController = segue.destinationViewController;
destViewController.lesson = selectedLesson;
}
}
我有一个 Table 带课程的视图,想在详细视图控制器中传递课程名称。但它总是通过第一行。
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewRowAction *edit = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"edit" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){
[self performSegueWithIdentifier:@"editLesson" sender:nil];
}];
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"editLesson"]) {
NSManagedObject *selectedLesson = [self.lessons objectAtIndex:[[self.tableView indexPathForSelectedRow] row]];
EditLessonViewController *destViewController = segue.destinationViewController;
destViewController.lesson = selectedLesson;
}
}
您应该在 performSegue 中将 indexPath 作为发件人传递。 有你的代码:
- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewRowAction *edit = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"edit" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){
[self performSegueWithIdentifier:@"editLesson" sender:indexPath];
}];
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"editLesson"]) {
NSIndexPath* indexPath = (NSIndexPath*)sender;
NSManagedObject *selectedLesson = [self.lessons objectAtIndex:indexPath.row];
EditLessonViewController *destViewController = segue.destinationViewController;
destViewController.lesson = selectedLesson;
}
}