Tag: uitableview

iOS-8及更高版本 – UIAlertController中的UITableView

我知道如何通过使用像UITableView accessoryView UIAlertView添加任何Custom UI ,但我现在好奇,如果我们仍然有select添加Custom UI内UIAlertController ,我想要的是一个UIAlertController内清醒的UIAlertController 。

UIImageView自动resize

我想设置一个图像到UITableView的SimpleTableCell的UIImageView 。 我已经改变了imageview的大小,但每当我尝试设置图像,它会自动调整自己。 我试图使用这里的代码来调整图像的大小,并设置它。 但它只适用于将图像尺寸设置为(20×20),这是UIImageView (40×40)大小的一半。 所以变得模糊了。 我也尝试设置UIAspectRatioFit/UIAspectratioFill和clipsToBounds = YES 。 似乎没有任何工作。 另一个奇怪的部分是,当我使用从web直接下载的图像时, imageView不会自动resize,如下所示: – (void)connectionDidFinishLoading:(NSURLConnection *)connection { UIImage *userImage = [UIImage imageWithData:userImageData scale:self.profileImage.frame.size.height/self.profileImage.frame.size.width]; UITableViewCell *cell = [self.myTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; cell.imageView.image = userImage; } 但是,然后我把这个图像存储到文档目录,然后尝试重新加载在其他地方,resize发生。 任何解决scheme

自定义UITableViewCell with reuseIdentifier没有样式?

在我的tableview中,我需要一堆(5-6种)不同的单元格。 所有项目都具有相同的视觉布局,但内容明智(标签名称,图片和颜色),它们有很大的不同。 所以我有一个CustomUITableViewCell基类,在Interface Builder中用这个通用devise来devise。 这个CustomUITableViewCell类服务器作为一组单元子类的基类。 我使用工厂模式从工厂类的类方法生成这些子类。 这些子类没有xibs。 他们为什么会有共同的devise。 现在问题是,对于每个子类我需要一个不同的重用标识符。因此,人们会认为让我们覆盖每个子类的默认初始化器,并在其中调用另一个初始化器, initWithStyle:reuseIdentifier: 问题是它需要风格来指定。 它抱怨说,我不能把nil 。 但是我不需要苹果的任何风格,我明显有自己的风格,如果我想要有一个股票风格,为什么要做定制devise? 我只需要指定reuseIdentifier。 如果它是只读属性,如何分配重用标识符,似乎是通过初始化程序提供它的唯一方法?

在iOS上,如何使cell.imageView刷新其内容?

我在tableView:cellForRowAtIndexPath尝试通过调用设置图像 [self downloadImage:urlString andSetIntoCellImageView:cell] 在downloadImage ,它将调用NSURLConnection:sendAsynchronousRequest (仅适用于iOS 5及更高版本),并在完成块中通过使用设置图像 cell.imageView.image = [UIImage imageWithData:data]; // data is downloaded data 它工作,如果在tableView:cellForRowAtIndexPath , imageView填充一个虚拟的占位符图像 – 我不知道如何刷新新的图像,是由setNeedsDisplay做一个重绘? 但是,如果我不设置占位符图像,那么新的图像将不会显示。 我不知道可以使用什么机制来显示图像? 如果我使用 [cell.imageView setNeedsDisplay] 要么 [cell setNeedsDisplay]; 在完成块,它将无法正常工作,如果我使用 [self.table reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationAutomatic]; 通过使downloadImage接受indexPath完成块,它将再次调用tableView:cellForRowAtIndexPath ,并导致无限循环。 所以好像我需要使用一些哈希表来记住图像是否已经在哈希表中:如果没有,调用downloadImage ,如果在哈希表中,只需使用它,所以不会有无限循环。 但有没有一种简单的方法来使图像显示出来? 设置一个占位符图像的作品,但如果我们不 – 通过什么机制的占位符导致图像刷新?

当删除button显示时调整UITableViewCell内容的大小

有没有办法使用自动调整掩码来移动我的内容,使删除button不覆盖它? 谷歌search告诉我,我需要在我的子视图上设置UIViewAutoresizingFlexibleRightMargin的UIViewAutoresizingFlexibleRightMargin确定的面具。 在我看来,像UIViewAutoresizingFlexibleWidth实际上会更有意义; 尽pipe我已经尝试过了,但都没有成功。 我想缩小的视图只是一个标签,是单元格的contentView的子视图。 我不确定contentView本身是否会在删除button显示时自动resize; 但似乎不是; 否则我的autoresizing面具应该已经工作。 如果存在删除button不会导致任何视图的大小; 无论如何,我可以手动做到这一点?

根据内容更新UITableViewCell的编辑风格

我正在创build一个类似于iPad联系人的基于表格的界面,用户可以通过点击底部的空白行来添加到行列表。 该表始终处于编辑模式,非空行应在左侧具有标准的删除编辑图标。 只要用户开始在最后一个空白行中input,就应该在左侧添加一个删除图标(并添加一个新的空白行)。 有谁知道如何使UITableView按需更新编辑风格? 一切正常,除了删除图标不会出现,直到用户滚动视图,然后回到视图。 这是我的editingStyleForRowAtIndexPath实现: – (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { if (/* text field contains data */) { return UITableViewCellEditingStyleDelete; } else { return UITableViewCellEditingStyleNone; } }

检测UITableView的底部“反弹”

我有一个表视图,当用户在UITableView上向下滚动(按下拇指向上)和不同的animation时,用户执行animation。 问题是当用户到达一个UITableView的底部,它弹跳,表注册一个向上,然后向下移动,从而执行animation,当它不应该。 滚动到顶部时也会发生同样的行为。 不过,我可以像这样检测它: – (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { self.lastContentOffset = scrollView.contentOffset; } -(void) scrollViewDidScroll:(UIScrollView *)scrollView { // Check if we are at the top of the table // This will stop animation when tableview bounces if(self.tableView.contentOffset.y < 0){ // Dont animate, top of tableview bounce } else { CGPoint currentOffset = scrollView.contentOffset; if (currentOffset.y > […]

Autolayout在计算UITableViewCell高度时忽略多行的detailTextLabel(所有样式)

所以我试图使用内置的UITableViewCell样式 – 特别是UITableViewCellStyleSubtitle – 与单行textLabel,但多行的 detailTextLabel 。 但(自动)计算的单元格高度始终太短,似乎忽略了多于一行的细节。 我已经尝试使用numberOfLines = 0,estimatedRowHeight,UITableViewAutomaticDimension,preferredMaxWidthLayout等,但在所有的排列行为 – 的确是所有的UITableViewCell样式 – 看来UITableViewAutomaticDimension单元格高度计算将正确地占多行textLabel (耶! ),但错误地认为detailTextlabel最多只有一行( 不可 !)。 因此,具有多行detailTextLabel的单元格太短,因此单元格内容溢出单元格的顶部和底部。 我已经发布了一个快速testing应用程序,在GitHub上显示这种行为。 添加额外的文本行很好 – 所有的单元格样式适当增加高度以适应 – 但添加额外的细节线没有任何改变单元格的高度,并迅速导致内容溢出; 文本+细节本身是正确布置的,并且正确地集中在单元格的中间(所以在这个意义上layoutSubviews正常工作),但是整个单元格高度本身并没有改变。 它几乎看起来像cell.contentView和标签之间没有实际的顶部和底部约束,而是直接从(可能是多行)textLabel和(只有单行)detailTextLabel的高度计算单元格高度,然后一切都集中在单元格的中间…再次,多行textLabel是好的,我在textLabel和detailTextLabel之间没有什么不同,但只有前者(正确)调整单元格的高度。 所以我的问题是,如果有可能使用内置的UITableViewCell样式来可靠地显示多行的 detailTextLabels ,或者这是不可能的,你需要创build一个自定义的子类吗? [或者,几乎等同于,不必重写子类中的layoutSubviews并手动重新连接所有约束]。 [2016年5月4日]结论:截至iOS9多行detailTextLabels不按预期与UITableViewAutomaticDimension工作; 单元格将一直太短,文本/细节将溢出顶部和底部。 要么你必须自己手动计算正确的单元格高度,或创build和布局自己的等价自定义UITableViewCell子类,或(请参阅我的答案下面)子类UITableViewCell和修复systemLayoutSizeFittingSize:withHorizontalFittingPriority:verticalFittingPriority:返回正确的高度[推荐]

用新数据重新加载uitableview导致闪烁

我添加了无限的滚动function,并意识到,每当我重新加载的uitableview,视图闪烁..我不知道如何解决闪烁在这一点上。 请帮忙,谢谢! 我看到一个非常类似的问题,但没有解决scheme。 我尝试了作者发布的一个,但它不工作:“从父视图中删除tableview,重新加载数据,把表视图放回父视图”( UITableView reloadData – 如何停止闪烁 ) 代码:[self.tableView reloadData];

使用Storyboard的UITableViewCell的“内部”视图和contentview之间剩余的垂直间距是什么原因?

我正在使用以下简化“层次结构”(从上到下)的iOS / xcode项目中的故事板: ViewController(由于某些定制原因,不是一个TableViewController) 视图 TableView(和其他一些我认为无关紧要的内容) 细胞 内容查看 “AnyView”(具体types似乎是无关紧要的,因为下面的每个项目我都试过) 当我将AnyView和ContentView之间的约束设置为顶部/底部/顶部/尾部的零间距时,ContentView和AnyView之间仍然有一些“空间”。 (我从来没有遇到过这种情况,只是以编程方式做类似的事情。) 为了摆脱这种间距,我在故事板选项中寻找所有的东西,甚至像间距/意图等那样遥远的响起,但是并没有真正成功。 无意中,我只是意识到,当我以某种方式将视图拖放到ContentView中时,故事板显示的负间距为-8,似乎“移除”了该间距。 我可以在我的约束中使用这个数字,但似乎有些随意。 有谁知道我不需要的间距可能是什么原因,或者如果-8有更深的含义(例如,也许苹果是这样强制一些devise指导故事板用户?)? 非常感谢您的任何见解!