#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. проверьте свойства этих переменных. убедитесь, что вы сохранили переменные.