UITableViewCell如何加载Subview
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UITableViewCell如何加载Subview相关的知识,希望对你有一定的参考价值。
我想在一个小块的ViewController动态加载一个小的View,就像好多网页FLASH做的分块。因为大小的原因我用了UITableViewCell作为底部控制器,加载是时候就是用addSubview这个函数。大概的代码是这样的:- (IBAction)switchButtonPressed:(id)sender UIButton *tempButton = (UIButton *)sender;//这个是判断用户点的那个按键,根据不同的按键加载不同的视图 if(tempButton == frButton)//当用户点是的第一个按钮 FrSwitchView *frController = [[FrSwitchView alloc] initWithNibName:@"FrSwitchView" bundle:nil];//实例化第一个视图控制器 [self.baseRootCell addSubview:frController.view];//baseRootCell是UITableViewCell的对象,加载上面实例化的试图。 [frController release]; //当运行到addSubview时候,代码跳到@synthesize baseRootCell这然后就会收到EXC_BAD_INSTRUCTION这样的信息。各位老大帮我看看是什么原因?
参考技术A 首先肯定是对cell的contentView做修改。contentViewReturns the content view of of the cell object. (read-only)@property(nonatomic, readonly, retain) UIView *contentViewDiscussionThe content view of a UITableViewCell object is the default superview for content displayed by the cell. 看这句话:If you want to customize cells by simply adding additional views, you should add them to the content view so they will be positioned appropriately as the cell transiti***** into and out of editing mode.所以应该先拿到contentView并保存,然后用这个view来添加subview如何重新加载 uitableviewcell 内的集合视图
【中文标题】如何重新加载 uitableviewcell 内的集合视图【英文标题】:how to reload a collectionview that is inside a tableviewcell 【发布时间】:2016-02-25 08:20:48 【问题描述】:我在 tableViewCell 中有一个 collectionView
例如: 信用:How to use StoryBoard quick build a collectionView inside UITableViewCell
我想在更新信息时重新加载collectionView。
我已经在 collectionView 的 cellForItemAtIndexPath 中打印了一个打印件来测试它是否被调用,但它不是。如何让 collectionView 重新加载?
【问题讨论】:
我投票结束这个问题作为离题,因为它不是真正的问题,因为“我只需要调用 cell.collectionView.reloadData()” 【参考方案1】:我知道怎么做!在我的 tableViewCell 类中,我只需要将 collectionView 链接为一个出口,所以在我的 tableViewCell 的cellForRowAtIndexPath
中,我只需要调用cell.collectionView.reloadData()
【讨论】:
添加 cell.collectionView.reloadData() 后,CollectionView 滚动在我的项目中非常慢。如何解决这种问题。 我也面临同样的问题。我们如何解决滚动缓慢的问题? 在集合视图上尝试以下操作 - invalidateLayout 和 layoutIfNeeded【参考方案2】:最简单的方法
for cell in tableView.visibleCells
(cell as? YourTableViewCell)?.collectionView.reloadData()
或者
如果需要重新加载具体UICollectionView
if let cell = tableView.cellForRow(at: IndexPath(row: 0, section: 0)) as? YourTableViewCell
cell.collectionView.reloadData()
【讨论】:
【参考方案3】:使用UITableView
的indexPath.row
为集合视图创建标签,并使用标签创建UICollectionView
的实例并重新加载!
【讨论】:
【参考方案4】:第一个在 tableview 单元格上创建这个函数:
func collectionReloadData()
DispatchQueue.main.async(execute:
self.collectionView.reloadData()
)
然后从
调用它func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell ...
cell.collectionReloadData()
【讨论】:
以上是关于UITableViewCell如何加载Subview的主要内容,如果未能解决你的问题,请参考以下文章
出队时如何阻止`UITableViewCell`中的`UIWebView`重新加载?
如何从自定义 UITableViewCell 调用操作以重新加载 tableView
如何从 nib 文件加载 UITableViewCell 高度?