※ 引述《y03131003 (Jimmy)》之铭言:
: 我有一个tableView
: 我在tableView的cell里装了一个collectionView
: 程式会去网络上抓图片,抓完之后我想要塞到collectionView的cell里
: 所以我在抓完图片的时候
: 呼叫了[self.tableView reloadData] 结果没反应
: 后来发现应该是要呼叫collectionView的reloadData才对
: 所以我在抓完图片后呼叫了以下程式
: for (UIView *view in [self.tableView subviews]) {
: for (UIView *collection in [view subviews]) {
^^^^^^^^^^^^^^^
这里的view你预期应该会抓到cell
但是cell的view hierarchy是这样的
in iOS6
<UITableViewCell>
| <UITableViewCellContentView>
| | <custom view objects>
in iOS7
<UITableViewCell>
| <UITableViewCellScrollView>
| | <UITableViewCellContentView>
| | | <custom view objects>
要抓到你放在cell里的collectionView
应该要是要用cell.contentView.subviews
contentView property 请看doc:
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/instp/UITableViewCell/contentView
: if ([collection isKindOfClass:[CollectTableViewCell class]]) {
: [[(CollectTableViewCell*)collection collectionView] reloadData];
: }
: }
: }
: (CollectTableViewCell 是装有collectionView的tableViewCell)
: 结果图片却没塞进去,确定有跑到reloadData
: 为了debug,我在touch到collectionView的时候呼叫了reloadData
: -(void)collectionView:(IndexCollectionView *)collectionView
: didSelectItemAtIndexPath:(NSIndexPath *)indexPath
: {
: [collectionView reloadData];
: }
: 结果图片成功塞进去了!
: 有人知道为什么会这样吗?
: 我不想要用手点击才更新collectionView啊QQ
再来,你问说有没有别的解法
一般来说
既然你的collection view是放在cell里
那你当然是在更新cell的内容时
一起更新collection view
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
......
[cell.collectionView reloadData]
}
你载完图之后[self.tableView reloadData]
UIKit就会call tableView:cellForRowAtIndexPath:
[cell.collectionView reloadData]自然也就会被执行了
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.46.233.9
※ 编辑: whitefur 来自: 114.46.233.9 (02/08 10:20)
※ 编辑: whitefur 来自: 114.46.233.9 (02/08 10:21)