我正在从事一个iPhone应用程序,它有一个相当大的UITableView与从networking采集的数据,所以我试图优化其创build和使用。 我发现dequeueReusableCellWithIdentifier是相当有用的,但在看到许多使用这个源代码后,我想知道如果我使用这个函数是好的。 以下是人们通常做的事情: UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"Cell"]; // Add elements to the cell return cell; 我这样做是这样的: // The cell row NSString identifier = [NSString stringWithFormat:@"Cell %d", indexPath.row]; UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (cell != nil) return cell; cell = [[UITableViewCell alloc] initWithFrame:CGRectZero […]
我正在使用iOS 8新的自动resize的单元格。 在视觉上它运作良好 – 每个细胞都有合适的尺寸。 但是,如果我尝试滚动到最后一行 ,表视图似乎不知道它的正确大小。 这是一个错误还是有一个修复? 以下是重新创build问题的方法: 使用这个项目 – TableViewCellWithAutoLayoutiOS8 (从这个SO答复引用),我得到了预期的自动resize的单元格。 但是,如果我正在调用scrollToRowAtIndexPath函数,如下所示: tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: model.dataArray.count – 1, inSection: 0), atScrollPosition: .Bottom, animated: true) 我没有走到最后一排 – 它只是让我到了那里。 即使通过尝试使用这样一个较低级别的function: tableView.setContentOffset(CGPointMake(0, tableView.contentSize.height – tableView.frame.size.height), animated: true) 结果并不如预期,它不会走到尽头。 如果我点击了很多次,或者稍等片刻,最终它会到达正确的位置。 看来tableView.contentSize.height设置不正确,所以iOS“不知道”最后一个单元格在哪里。 将不胜感激任何帮助。 谢谢
我正在使用静态单元格的分组UITableView的选项屏幕/场景。 一切都在Xcode 6.1 / iOS 8.1.x / Storyboard使用Autolayout完成。 在表格组里有混合types的单元格,有两种types会引起我的问题: 单元格与自定义样式和 具有样式“右侧细节” 在单元格1上,我可以为标签和前导容器之间的左边距设置一个约束。 就我所知,在单元#2上,我无法在Interface Builder中设置任何约束。 我已经在单元格#1中的标签上设置了左边距,使其与单元格#2中的标签alignment。 一切都在iPhone上看起来不错,但如果我在iPad上显示表视图的容器的大小是屏幕大小的一半的同一张表,单元格#2获得更多的余量(dynamic?),而单元格1保持绝对余量我在约束中设置。 我也尝试改变单元格#1的左边距的属性“相对于边距”,但无济于事。 苹果手机: iPad(桌面宽度= 1/2屏幕尺寸) 所以问题是:我如何设置单元格#1中的标签的约束,以便它像单元格#2一样alignment。 这里也是一个Xcode 6.1示例项目的链接,演示了这个问题。 在iPhone和iPad上运行以查看区别: https://dl.dropboxusercontent.com/u/5252156/Code/tableViewTest.zip 这个问题可能与iPhone和iPad的Layout静态表格单元格有关 ,但是对于iOS 8来说也可能不同,因为现在一切都应该是自适应的。 这就是为什么我决定发表这个问题。
我想我的表列表中有一个像iOS 8(首先在iOS 7中引入)的可滑动菜单。 我find了Ray Wenderlich的指南,明确了如何去做,但是它是在一年零四个月前编写的,代码在Objective-C中。 iOS 8或者即将到来的iOS 9终于在苹果的SDK中包含了这个function吗? 我知道他们在几年前build立了“轻扫显示删除function”。 我不想浪费时间来实现打补丁的代码来模仿iOS 8的邮件function,如果苹果新的iOS将把它交给我一个整齐包装的包。
我正在尝试调整我的表格视图中的一个单元格的单元格高度。 我从正在讨论的单元格的“大小检查器”中的“行高”设置resize。 当我在iPhone上运行应用程序时,单元格具有表格视图中“行大小”设置的默认大小。 如果我改变表格视图的“行大小”,那么所有单元格的大小都会改变。 我不想这样做,因为我只想要一个单元格的自定义大小。 我已经看到了很多有解决问题的scheme,但是如果可能的话,我宁愿通过故事板来完成。
我正在一个应用程序,我有一个自定义的UITableViewCell的子类。 我想根据里面的文本使单元格的高度dynamic化。 我尝试在我的heightForRowAtIndexPath方法中做到这一点。 但是我有一些问题,下面的代码会导致EXC_BAD_ACCESS(code = 2 address = 0xb7ffffcc)的错误。 – (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { PostCell *cell = (PostCell *)[tableView cellForRowAtIndexPath:indexPath]; CGSize postTextSize; if (![cell.postText.text isEqualToString:@""]) { postTextSize = [cell.postText.text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(cell.postText.frame.size.width, 200)]; } else { postTextSize = CGSizeMake(cell.postText.frame.size.width, 40); } return postTextSize.height + cell.userName.frame.size.height + 10; } 如果我反而有: – (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath […]
从官方文档: 重用标识符与表视图的委托创build的UITableViewCell对象相关联,意图将其用作表视图的多行的基础(出于性能原因)。 它被分配给initWithFrame中的单元对象:reuseIdentifier:并且之后不能被改变。 UITableView对象维护当前可重用单元的队列(或列表),每个单元都有自己的重用标识符,并使它们在dequeueReusableCellWithIdentifier:方法中可用于委托。 http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITableViewCell_Class/Reference/Reference.html#//apple_ref/occ/instp/UITableViewCell/reuseIdentifier 我不明白这一点。 那么,我明白了你创buildUITableViewCells的基本思想,并尽可能多地重复使用,而不是创build新的(或类似的东西)。 但究竟决定一个单元是否可重用呢? 如果我有两个完全相同的(可视的)单元格,但有不同的文本(我想它们不完全相同),它们都可以具有相同的标识符吗? 或者他们应该有不同的? 或者在什么情况下你应该使用不同的标识符? 任何人都可以澄清或链接到一个地方吗?
我正在试图在表视图单元格中按下button的操作。 以下代码在我的表视图控制器类中。 在我的UITableViewCell类叫做requestsCell的sockets中,button被描述为“是”。 我正在使用Parse保存数据,并希望按下button时更新对象。 我的objectIds数组工作正常,cell.yes.tag也打印正确的号码的日志,但是,我不能把这个号码到我的“连接”function,以正确运行我的查询。 我需要一种方法来获取单元格的indexPath.row来find适当的objectId。 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as requestsCell // Configure the cell… cell.name.text = requested[indexPath.row] imageFiles[indexPath.row].getDataInBackgroundWithBlock{ (imageData: NSData!, error: NSError!) -> Void in if error == nil { let image = UIImage(data: imageData) cell.userImage.image = image }else{ println("not working") […]
我已经使用Storyboards(选项卡视图模板)创build了一个新的Xcode项目。 我添加了几个视图控制器到我的故事板,并希望使用一个静态单元格的UITableView。 我创build了它,但是当我在模拟器中运行时,单元格不显示。 除了这个故事板文件,我没有改变任何项目。 我正在显示故事板编辑器和模拟器运行的截图。 标签出现,所以视图加载正确。 我设置背景颜色为灰色,所以我可以看到talbeview正在加载。 所有单元格都设置为可见。 我把他们的风格改成了Basic,编辑了标签,并增加了一个披露指标,就这些。
我有两个NSMutableArray的。 它们由图像或文字组成。 数组通过UITableView显示。 当我杀了应用程序的UITableView内的数据会丢失。 如何使用NSUserDefault在UITableView保存数组?