Ich bin ein Junior-Entwickler und ich bin fest in dieser sehr einfachen Sache, die ich nicht herausfinden kann. Ich habe eine Klasse AFHTTPRequestOperationManager
erweitert. Bedeutet, es ist @interface apiClient : AFHTTPRequestOperationManager
in dieser Klasse Ich habe alle meine Code, die Bilder von Imgur API abrufen und AFNetworking
verwenden Ich habe die Daten bis zu einem Level analysiert, wo ich nur die Verknüpfung der Bilder zu bekommen.
Jetzt ist die rootViewController
welche eine UICollectionViewController
erweitert. In ihm ist viewDidLoad
Ich sende einen Anruf an meine APIClient und es beginnen, von Methoden zu Methoden und schließlich geben Sie mir eine NSMutableArray
, die den Bilder Link enthält, die ich in der UIImageView
meiner CollectionViewCell
verwenden werde.
Die Frage ist ich dies mit den Endglieder zurück zu meinem rootViewController
heißt GalleryCollectionViewController
Übergeben Sie die analysierten Daten an UICollectionView
GalleryCollectionViewController *gcvc = [[GalleryCollectionViewController alloc] init];
[gcvc recieveGalleryImagesLinks:galleryImgLinkArr];
Das Problem, dass es numberOfItemsInSection
in gcvc
ist senden ruft, bevor er eine Antwort von der API erhalten. Das bedeutet, dass die Zählung Null wird und daher die Daten nicht angezeigt werden. Also wie kann ich es bekommen, um den API-Aufruf von apiClient
Klasse zuerst und dann die viewController
. Ich hoffe, ich habe mein Problem klar benannt und wenn es notwendig ist, mehr Code zu teilen, werde ich es tun.
UPDATE
Nach Genehmigung dieser Methoden, um die Galerie Bilder bekommt:
- (void)galleryAlbum:(NSString *)ID {
NSLog(@"ID is %@", ID);
[self GET:[NSString stringWithFormat:@"%@3/gallery/album/%@", self.baseURL,ID] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
self.galleryData = (NSDictionary *)responseObject;
galleryDataArr = [[NSMutableArray alloc] init];
galleryDataArr = [self.galleryData valueForKey:@"data"];
galleryImagesArr = [[NSMutableArray alloc] init];
galleryImagesArr = [galleryDataArr valueForKey:@"images"];
galleryImgLinkArr = [[NSMutableArray alloc] init];
galleryImgLinkArr = [galleryImagesArr valueForKey:@"link"];
GalleryCollectionViewController *gcvc = [[GalleryCollectionViewController alloc] init];
[gcvc recieveGalleryImagesLinks:galleryImgLinkArr];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failed #2");
}];
}
Hier gcvc das Array mit Bildern Link empfängt und dann die Sammlung Ansicht Nachladen als:
-(void)recieveGalleryImagesLinks:(NSMutableArray *)array
{
self.imageLinks = [[NSMutableArray alloc] initWithArray:array];
NSLog(@"Array: %@",self.imageLinks);
[self.collectionView reloadData];
}
Aber es gibt "UICollectionView: muss mit einem Nicht-Null-Layout-Parameter initialisiert werden", obwohl das Array nicht ist leer.
Aktualisieren Sie Ihre Frage mit dem entsprechenden Code, der die Daten erhält. Sie müssen die Sammlung (im Hauptthread) neu laden, wenn die Daten abgerufen werden. – rmaddy
@rmaddy Jetzt prüfen –
Sie erstellen einen neuen Ansichtscontroller, anstatt auf den vorhandenen Ansichtscontroller zuzugreifen. – rmaddy