ios uitableviewcell 样式怎样滚动不调用

下次自动登录
现在的位置:
& 综合 & 正文
解决快速滚动自定义UITableViewCell内存警告,程序闪退的问题
由于自定义tabelviewcell 老是重新创建,应该将cell重复用
,复用可以减少内存,最重要的是else部分,代码如下:if (!cell) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType
= UITableViewCellAccessoryN
cell.selectionStyle = UITableViewCellSelectionStyleN
//重要,释放cell,防止闪退方法,其他CustomCell 均可沿用
while ([cell.contentView.subviews lastObject]
[(UIView*)[cell.contentView.subviews
lastObject] removeFromSuperview];
&&&&推荐文章:
【上篇】【下篇】UITableViewCell中添加横向滚动视图,用于展示不同图片。利用UICollectionView的优点,从而性能上有很大优化
查看次数:1866
下载次数:261
上传时间:
大小:4 KB
/amber01/WSHorizontalListView.git ,在UITableViewCell中添加横向滚动视图,用于展示不同图片。利用UICollectionView的优点,从而性能上有很大优化
您还没有登录!请或
下载过该代码的还下载了
本周热门下载
&2017 Chukong Technologies,Inc.
京公网安备89[ios]由于僵尸对象滚动崩溃在自定义的 UITableViewCell 与 UITableView 中的应用
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.
我有这段代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *simpleTableIdentifier = @"BSTGListCell";
BSTGListCell *cell = (BSTGListCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
cell = [[[NSBundle mainBundle] loadNibNamed:@"BSTGListCell" owner:self options:nil] objectAtIndex:0];
PFObject* currentEl = [self.tableData objectAtIndex:indexPath.row];
cell.title.text = [currentEl objectForKey:@"Name"];
cell.description.text = [currentEl objectForKey:@"Address"];
当我正在"短信发送到释放实例"滚动表格视图,添加为子视图。僵尸督察说访问的对象在这里保留:
cell = [[[NSBundle mainBundle] loadNibNamed:@"BSTGListCell" owner:self options:nil] objectAtIndex:0];
并通过电ARC可能释放出来。发生这种情况的原因和如何能防止它吗?
解决方法 1:
你真的不应该这样做。方法使用单元格从nib是注册的nib,大概在 viewDidLoad,像这样:
UINib *nib = [UINib nibWithNibName:@"BSTGListCell" bundle:nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"BSTGListCell"];
然后在你的 cellForRowAtIndexPath,使用 dequeueReusableCellWithIdentifier:forIndexPath: 并没有 if(cell == nil) 子句。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
BSTGListCell *cell = (BSTGListCell *)[tableView dequeueReusableCellWithIdentifier:@"BSTGListCell" forIndexPath:indexPath];
PFObject* currentEl = [self.tableData objectAtIndex:indexPath.row];
cell.title.text = [currentEl objectForKey:@"Name"];
cell.description.text = [currentEl objectForKey:@"Address"];
您的代码的实际问题是,loadNibNamed:owner:options,返回一个数组,和你有,首先要从该数组的一个对象,才可以指派它细胞。但是,我表明的方式是更有效率的方式做到这一点不管怎么说。主题 : UItableviewCell上添加slider不能滑动
级别: 新手上路
可可豆: 90 CB
威望: 90 点
在线时间: 97(时)
发自: Web Page
来源于&&分类
UItableviewCell上添加slider不能滑动&&&
UItableviewCell上添加slider不能滑动怎么解决啊 
级别: 新手上路
可可豆: 37 CB
威望: 27 点
在线时间: 84(时)
发自: Web Page
会不会是被其它的View 给挡住了?或者最大值最小值都设了么
级别: 新手上路
可可豆: 90 CB
威望: 90 点
在线时间: 97(时)
发自: Web Page
回 1楼(976431yang) 的帖子
设了啊&&还是不行----------
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版8205人阅读
【错与对】(7)
& & & & & UITableView中的cell可以有很多,一般会通过重用cell来达到节省内存的目的:通过为每个cell指定一个重用标识符(reuseIdentifier),即指定了单元格的种类,当cell滚出屏幕时,会将滚出屏幕的单元格放入重用的queue中,当某个未在屏幕上的单元格要显示的时候,就从这个queue中取出单元格进行重用。但对于多变的自定义cell,有时这种重用机制会出错。
& &&& &最近一个人在自主开发软件,今晚在tableview上使用自定义cell时遇到一个问题:每次上下滚动tableview时,当自定义的cell滚回可见范围内时会被打乱,甚至会消失,如图:
& & & & & & & & & & & & & & & & &&
& & & & & &
2、解决方法:
& & & & & 方法①: & &&
& & & & & & & & & & & & & & & UITableViewCell
*cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];&
& & & & & & & & & & & & &改为以下的方法:
& & & & & & & & & & & & & & & UITableViewCell *cell = [tableViewcellForRowAtIndexPath:indexPath];
& & & & & & & & & & &&
& & & & & & & & & & & & & &注 : & & 重用机制调用的就是dequeueReusableCellWithIdentifier这个方法,方法的意思就是“出列可重用的cell”,
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &因而只要将它换为cellForRowAtIndexPath,就可以不使用重用机制,&
& & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &因而问题就可以得到解决,虽然可能会浪费一些空间。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @&Cell&;
// UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//改为以下的方法
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];//根据indexPath准确地取出一行,而不是从cell重用队列中取出
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
//...其他代码
& & & & & 方法②:
& & & & & & & & & & & &通过为每个cell指定不同的重用标识符(reuseIdentifier)来解决
& & & & & & & & & & &注:&重用机制是根据相同的标识符来重用cell的,标识符不同的cell不能彼此重用。
& & & & & & & & & & & & &&于是我们将每个cell的标识符都设置为不同,就可以避免不同cell重用的问题了。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:40702次
排名:千里之外
原创:30篇
评论:31条
(2)(2)(2)(1)(3)(4)(5)(8)(3)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 uitableviewcell xib 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信