私は4つの画面を備えたiOSでアプリケーションを作成しており、そのうちの1つはフォトギャラリーとして機能したいと考えています。グラフを使用してFacebookページからダウンロードしたこの画像。viewDidLoad メソッドの ViewController クラスで、接続 URL を作成します。
(void)viewDidLoad
{
[super viewDidLoad];
NSString *urlString = [NSString stringWithFormat:@"https://graph.facebook.com/NBAStoreNYC/photos"];
NSURL *url = [NSURL URLWithString:urlString];
// Create NSURLRequest
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:30];
//Create conection
NSURLConnection *connection = [NSURLConnection connectionWithRequest:request delegate:self];
if (connection)
{
NSLog(@"Connecting...");
dataJSON = [[NSMutableData alloc] init];
}
else
{
NSLog(@"ERROR: Unable to create connection.");
}
}
画像をダウンロードするために、返された JSON を解析しました。それぞれの for..end で画像の URL を取得します。
-(void)connection:(NSURLConnection )connection didFailWithError:(NSError )error{ NSLog(@"Error: %@", [error localizedDescription]); }
-(void)connection:(NSURLConnection )connection didReceiveResponse:(NSURLResponse )response{ NSLog(@"Received response: %@", response); [dataJSON setLength:0]; }
-(void)connection:(NSURLConnection )connection didReceiveData:(NSData )data { [dataJSON appendData:data]; }
-(void) connectionDidFinishLoading:(NSURLConnection *) connection {
NSError *error;
UIImageView *image1;
NSMutableArray *coleccion=[[NSMutableArray alloc] init];
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:dataJSON options:kNilOptions error:&error];
NSArray *data = [dic objectForKey:@"data"];
if (!dic) {
NSLog(@"Error parsing JSON");
} else {
for(NSDictionary *item in [dic objectForKey:@"data"]) {
for(NSDictionary *attachment in [item objectForKey:@"images"]) {
NSString *nombre = [attachment objectForKey:@"source"];
NSURL * imageURL = [NSURL URLWithString:nombre];
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
image1 = [UIImage imageWithData:imageData];
[items addObject:image1];
}
}
}
//[self.view setNeedsDisplay];
}
最後に、コレクション ビューを使用してギャラリーを作成しました。
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return [items count]*5;
}
-(UICollectionViewCell )collectionView:(UICollectionView )collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier = @"CollectionCell";
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
UIImageView *imageView = (UIImageView *)[cell viewWithTag:1];
imageView.image = [items objectAtIndex:indexPath.row%1];
return cell;
}
さて、アプリを実行しても画像が読み込まれませんでした。なぜですか? 画像を表示するにはどうすれば解決できますか? 演習はこれとほぼ同じです: http://www.techotopia.com/index.php/An_iPhone_iOS_6_Storyboard-based_Collection_View_Tutorial 違いは、Facebook グラフの画像をダウンロードする必要があり、プロジェクトに既に読み込まれていないことです。
どうもありがとうございました。