Передача объекта между 2 контроллерами представления не работает

#iphone #objective-c #cocoa-touch

#iPhone #objective-c #cocoa-touch

Вопрос:

Я пытаюсь передать 3 объекта в другой VC, но они отображаются как Null в VC назначения.

VC1:

 - (void)specificExerciseTableViewController:(SpecificExerciseTableViewController *)specificExerciseTableViewController didSelectSpecificExerciseWithURL:(NSString *)exerciseURL muscleName:(NSString *)muscleName muscleURL:(NSString *)muscleURL;
{
    [self addExercise];
}

-(void)addExercise
{       
    PFObject *exerciseInRoutine = [[PFObject alloc] initWithClassName:@"exerciseInRoutine"];
    [exerciseInRoutine setObject:self.selectedExercise forKey:@"name"]; 
    [exerciseInRoutine setObject:self.muscleName forKey:@"muscle"]; 
    [exerciseInRoutine setObject:self.muscleURL forKey:@"picture"]; 
    [exerciseInRoutine saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (!error) {
            [self.tableView reloadData];
        } else {
            NSLog(@"Error: %@ %@", error, [error userInfo]);
        }
    }];   
}
 

Класс, который передает объекты в VC1:

  if ([self.delegate respondsToSelector:@selector(specificExerciseTableViewController:didSelectSpecificExerciseWithURL:muscleName:muscleURL:)])
                {
                    NSString *exerciseName = [[self.exerciseArray objectAtIndex:selectedRowIndex.row] objectForKey:@"exerciseName"];
                    [self.delegate specificExerciseTableViewController:self didSelectSpecificExerciseWithURL:exerciseName muscleName:self.muscleName muscleURL:self.muscleURL];
                    [self dismissModalViewControllerAnimated:YES];
                }
 

Редактировать:

Я обновил свой метод, чтобы установить для объектов свойства VC, но у меня такая же проблема:

 - (void)specificExerciseTableViewController:(SpecificExerciseTableViewController *)specificExerciseTableViewController didSelectSpecificExerciseWithURL:(NSString *)exerciseURL muscleName:(NSString *)muscleName muscleURL:(NSString *)muscleURL;
{
    self.muscleName = exerciseURL;
    self.muscleName = muscleName;
    self.muscleURL = muscleURL;
    [self addExercise];
}
 

Ответ №1:

Что, по вашему мнению, произойдет, когда вы выполните приведенный выше код?

Ваш второй блок кода вызывает -specificExerciseTableViewController:didSelectSpecificExerciseWithURL:muscleName:muscleURL: некоторые delegate вызовы, но реализация этого метода в вашем примере «VC1» игнорирует аргументы, переданные этому методу. Похоже, вы ничего не делаете с предоставленными вам данными.

Комментарии:

1. Я обновил вопрос своим методом, чтобы установить объекты в свойства VC, но у меня такая же проблема:

Ответ №2:

Проблема в том, что вы передаете аргументы объекту delgate.но внутри метода делегирования вы не передали аргументы функции addExercise или не назначили параметры своим свойствам перед вызовом метода.

Комментарии:

1. проверьте свойства этих переменных. убедитесь, что вы сохранили переменные.