无法在 uicollectionview 中显示一组 uimage
Posted
技术标签:
【中文标题】无法在 uicollectionview 中显示一组 uimage【英文标题】:Cannot display set of uimages in uicollectionview 【发布时间】:2015-02-23 18:39:52 【问题描述】: @implementation StudyViewController
- (void)viewDidLoad
[super viewDidLoad];
//[super viewWillAppear:animated];
... 基本上我通过afnetworking接收响应对象。 然后将数据存储在一个名为 arData 的全局定义的 nsmutable 数组中
............
...........
[manager POST:studysearchUrl parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject)
[MBProgressHUD hideHUDForView:self.view animated:YES];
NSLog(@"%@",responseObject);
[Global sharedGlobal].arrData = responseObject;
failure:^(AFHTTPRequestOperation *operation, NSError *error)
[MBProgressHUD hideHUDForView:self.view animated:YES];
NSLog(@"Error: %@", error);
];
#pragma collection view methods
- (NSInteger) numberOfSectionsInCollectionView:(UICollectionView *)collectionView
return 1;
-(NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
return [[[Global sharedGlobal]arrData] count];
-(UICollectionView *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"StudyCell" forIndexPath:indexPath];
然后将 nsmutable 对象索引存储为字典,以便在创建图像路径时访问。 我需要从这个 nsmutable 数组中提取 3 组数据(firstUID、第二个、第三个),这些数据将被传递给 NSURL 以构造图像 url 路径,如下所示。 其余参数(hyperText、UrlKey、portNumber、分隔符)通过 nsdictionary(此处未显示)传递。
UIImageView *img = (UIImageView *)[cell viewWithTag:1000];
NSDictionary *dictionary = [Global sharedGlobal].arrData[indexPath.row];
img.imageURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@%@%@?parametersintheWebServer&firstID=%@&secondID=%@&thirdID=%@",hyperText, UrlKey, portNumber, seperator, [Global sharedGlobal].arrData[indexPath.row] [@"firstUID"],[Global sharedGlobal].arrData[indexPath.row][@"secondUID"],[Global sharedGlobal].arrData[indexPath.row][@"thirdUID"]]];
return cell;
- (void)didReceiveMemoryWarning
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
@end
1- 我似乎无法在控制台内部获得任何 NSLOG 输出
-(UICollectionView *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
2- 即使我知道从 Web 服务接收到的参数是正确的,我也无法显示任何图像(并且当 viewdidload 时,我可以 NSLOG 它们而不会出现任何问题。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
检查您的共享控制器是否存在? arrData nsmutable 在 Global.h 中定义&它存在于这个视图控制器StudyViewController 中 【参考方案1】:您应该首先看到对numberOfItemsInSection
的调用。如果您可以在其中设置断点(或 NSLog)并且 [[[Global sharedGlobal]arrData] count]
的查看计数不大于 0,那么这可能有助于解决问题。如果它没有击中该委托回调,则可能没有为集合视图正确设置委托。
【讨论】:
感谢您的回复。我试过 NSLog(@"%lu", (unsigned long) [[[Global sharedGlobal]arrData] count]);是说代码永远不会被执行? 我实际上可以看到计数 = 5。仍然无法获取图像。在我的场景中,如何设置委托和数据源?对这个有点困惑。我需要将委托和数据源设置为自身吗?谢谢 当你看到NSLog(@"%lu", (unsigned long) [[[Global sharedGlobal]arrData] count])
永远不会被执行时,你把它放在哪里。
解决了这个问题。将委托设置为自身。傻我!。但是,我目前遇到了糟糕的图像滚动问题。以上是关于无法在 uicollectionview 中显示一组 uimage的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 iOS 10 - 带有图像和文本的 UICollectionView 无法正确显示
重新加载后无法取消选择 UICollectionView 单元格