У меня есть этот кусок кода, чтобы подтолкнуть контроллер представления:
// Setup the animation
[self.navigationController pushViewController:self.productView animated:YES];
self.productView.imageURL = [product imageURL];
// Set the title of the view to the product's name
self.productView.title = [product name];
// Set the label text of all the labels in the view
[self.productView.caloriesL setText:[product calories]];
[self.productView.fatL setText:[product fat]];
[self.productView.saturatesL setText:[product saturates]];
[self.productView.sugarL setText:[product sugar]];
[self.productView.fibreL setText:[product fibre]];
[self.productView.saltL setText:[product salt]];
Но метод делегата viewDidAppear не вызывается при появлении productView. Я посмотрел на проблему в Google, и там было много разных решений, ни одно из которых я не мог применить к своей проблеме. У меня была похожая проблема в предыдущем решении, но я обошел ее вручную, вызвав viewDidApear в методе viewDidLoad. К сожалению, в этом случае я не могу этого сделать, так как viewDidLoad вызывается только один раз (при первом нажатии). Кто-нибудь знает как это исправить?
Спасибо
Джек Наткинс
EDIT:
Вот метод viewDidAppear в productView (и селектор):
- (void)viewDidAppear:(BOOL)animated{
//Start animating the activity indicator
[indicator startAnimating];
//Perform this method in background
[self performSelectorInBackground:@selector(loadImage) withObject:nil];
}
- (void) loadImage {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// Load the animals image into a NSData boject and then assign it to the UIImageView
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:imageURL]];
UIImage *image = [[UIImage alloc] initWithData:imageData];
self.imageView.image = image;
//Stop animating the activity indicator
[indicator stopAnimating];
[pool drain]; //see comment below
}