Я новичок в программировании для iOS и имею ограниченные знания iOS и Objective-C, поэтому, пожалуйста, помогите мне.
Я работаю над приложением для фотографий flickr, которое, в основном, требует данные о фотографии из API flickr и представляет их в scrollView.
Но я столкнулся с некоторой проблемой в моей версии для iPad, представленной с помощью UISplitViewController.
Позвольте мне дать простое введение в мое приложение.
MASTER VIEW: список UITableViewController, встроенный в UINavigationViewController, в основном он просто использует API-интерфейс Flickr для получения некоторых данных, представляя что-то вроде этого:
navigationController ->
tableViewControllerA (фотографии организованы по странам) ->
tableViewControllerB (список фотографий в этой стране)
Когда фотография выбрана в TableViewControllerB, в моем коде я передаю URL фотографии (из flickr API) в мой контроллер подробного просмотра, который представляет собой scrollView, и вот мой код в scrollView ViewController.
IBOutlet UIScrollView *scrollView;
IBOutlet UIImageView *imageView;
NSURL *photoURL;
- (void) viewDidLoad
{
[super viewDidLoad];
dispatch_queue_t downloadQueue = dispatch_queue_create("flickr donwloader", NULL);
dispatch_async(downloadQueue, ^{
// load image
self.imageView.image = [UIImage imageWithData: [NSData dataWithContentsOfURL:self.photoURL]];
dispatch_async(dispatch_get_main_queue(), ^{
// configure scrollView and imageView
CGSize photoSize = self.imageView.image.size;
self.scrollView.delegate = self;
[self.scrollView setZoomScale:1.00];
[self.scrollView setMinimumZoomScale:0.5];
[self.scrollView setMaximumZoomScale:1.00];
self.scrollView.contentSize = photoSize;
self.imageView.frame = CGRectMake(0, 0, photoSize.width, photoSize.height);
CGPoint scrollCenter = self.scrollView.center;
self.imageView.center = scrollCenter;
});
});
dispatch_release(downloadQueue);
и в главном представлении, когда изображение выбрано, я устанавливаю свойство photoURL элемента detailView (scrollView), поэтому я переопределяю метод установки photoURL
-(void) setPhotoURL:(NSURL *)photoURL
{
// do something to refresh my scrollView, below are something I already tried
self.imageView.image = [UIImage imageWithData: [NSData dataWithContentsOfURL:self.photoURL]];
[self.scrollView setNeedsDisplay];
[self.view setNeedsDisplay];
[self.imageView setNeedsDisplay];
}
моя цель состоит в том, чтобы, когда моя модель (photoURL) показала, мой scrollView должен дать мне соответствующий imageView, но когда мое приложение запустилось и я выбрал фотографию, scrollView не "обновился", я уже научился обновлять UITableView (self.tableView reloadData), но я действительно не знаю, как это сделать, пожалуйста, помогите!
PS:
1 Пожалуйста, простите меня за плохой английский -_- Я уже пытался объяснить как можно яснее.
2 У меня недостаточно репутации, чтобы обновлять изображение, чтобы вы, ребята, полностью поняли, что такое мое приложение, надеюсь, вы поймете только то, что я сказал
UPDATE:
Я использую механизм KVO вместо переопределения метода set для photoURL, но [self.scrollView setNeedsDisplay] все еще не работает.
Я использую отладчик для отслеживания прогресса, KVO работает, но ничего не происходит после [self.xxx setNeedsDisplay], я полностью сбит с толку и не знаю, что делать.