URLとして取得されたXMLファイルからいくつかの画像のセットをリストしているテーブルビューがあります。これを Collection Views で拡張しました。ユーザーがテーブルビューで画像を選択すると、対応する画像が次のウィンドウに移動し、一連の画像がコレクションビューとして表示されます。
ここで、テーブル ビューで任意の画像をクリックすると、すべてのコレクション ビューで同じ画像が表示されるという問題に直面します。理解を深めるために、下の画像を添付しました。
この場合、テーブル ビューには Image-1、Image-2... などが表示されます。テーブル ビューで Image-1 をクリックすると、コレクション ビューが Image1-1、Image1-2、.. のように表示されます。再度、テーブル ビューで Image-2 をクリックすると、同じ Image-1-1、Image-1-2 などが表示されます。
この問題を解決する方法を誰か教えてください。
対応するコードを以下に示します。
テーブルビュー
- (void)viewDidLoad
{
[super viewDidLoad];
xmlParser = [[myXMLParser alloc] loadXMLByURL:@"http://sample.com/Images.xml"];
[self.tableView reloadData];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [xmlParser.tweets count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"images";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
UIImage *currentTweet = [[xmlParser tweets] objectAtIndex:indexPath.row];
UIImageView *tweetImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,cell.frame.size.width , cell.frame.size.height)];
tweetImageView.image = currentTweet;
[cell setBackgroundView:tweetImageView];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
MyCollectionViewController *collectViewController = [[MyCollectionViewController alloc] initWithNibName:@"detail" bundle:nil];
[self.navigationController pushViewController:collectViewController animated:YES];
}
コレクションビュー
- (void)viewDidLoad
{
[super viewDidLoad];
xmlParser = [[myXMLParser alloc] loadXMLByURL:@"http://sample.com/Images.xml"];
UIImage *currentImage = [[xmlParser tweets] objectAtIndex:0];
customimage.image = currentImage;
UIImage *currentImage1 = [[xmlParser tweets] objectAtIndex:1];
customimage1.image = currentImage1;
}
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return [xmlParser.tweets count];
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MyCollectionViewCell *myCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MyCell" forIndexPath:indexPath];
UIImage *currentTweet = [[xmlParser tweets] objectAtIndex:indexPath.row];
UIImageView *tweetImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,myCell.frame.size.width , myCell.frame.size.height)];
tweetImageView.image = currentTweet;
[myCell setBackgroundView:tweetImageView];
return myCell;
}
更新しました
私のXML
<?xml version="1.0" encoding="UTF-8"?>
<Products>
<products id="0">
<img>http://myimage.com/images/logo1.png</img>
</products>
<products id="1">
<img>http://myimage.com/images/Main_pic.png</img>
</products>
<products id="2">
<img>http://myimage.com/images/image1.png</img>
</products>
<products id="3">
<img>http://myimage.com/images/image2.png</img>
<img-subproduct>http://myimage.com/images/image2-1.png</img-subproduct>
<img-subproduct>http://myimage.com/images/image2-2.png</img-subproduct>
</products>
<products id="4">
<img>http://myimage.com/images/image3.png</img>
<img-subproduct>http://myimage.com/images/image3-1.png</img-subproduct>
<img-subproduct>http://myimage.com/images/image3-2.png</img-subproduct>
</products>
</Products>