Questions tagged «uitableview»

UITableView是用于在iOS上显示和编辑信息列表的类。表格视图在单个列中显示项目。UITableView是UIScrollView的子类,尽管UITableView仅允许垂直滚动,但它允许用户滚动表。

30
-didSelectRowAtIndexPath:不被调用
我正在写一个带有选项卡视图内的表格视图的iOS应用。在我的中UITableViewController,我实现了-tableView:didSelectRowAtIndexPath:,但是当我在运行时选择一行时,不会调用该方法。虽然正在填充表视图,所以我知道正在调用控制器中的其他tableView方法。 有谁知道我可能为实现这一目标而搞砸了什么?

23
如何从Xib文件加载自定义UITableViewCells?
问题很简单:如何UITableViewCell从Xib文件加载自定义?这样可以使您使用Interface Builder设计单元。由于内存管理问题,答案显然并不简单。该线程提到了该问题并提出了解决方案,但已在NDA之前发布,并且缺少代码。这是讨论问题的长篇文章,但没有提供明确的答案。 这是我使用的一些代码: static NSString *CellIdentifier = @"MyCellIdentifier"; MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil]; cell = (MyCell *)[nib objectAtIndex:0]; } 要使用此代码,请创建MyCell.m / .h,这是MyCell的新子类,UITableViewCell并IBOutlets为所需的组件添加。然后创建一个新的“ Empty XIB”文件。在IB中打开Xib文件,添加一个UITableViewCell对象,将其标识符设置为“ MyCellIdentifier”,并将其类设置为MyCell并添加您的组件。最后,将连接IBOutlets到组件。请注意,我们没有在IB中设置文件的所有者。 其他方法提倡设置文件的所有者,如果没有通过其他工厂类加载Xib,则警告内存泄漏。我在“仪器/泄漏”下测试了以上内容,但没有发现内存泄漏。 那么从Xibs加载单元的规范方法是什么?我们是否设置文件的所有者?我们需要工厂吗?如果是这样,工厂的代码是什么样的?如果有多种解决方案,让我们阐明它们各自的优缺点...

15
什么是NSLayoutConstraint“ UIView-Encapsulated-Layout-Height”,我应该如何强制其重新进行干净的计算?
我UITableView在iOS 8下运行,并且正在使用情节提要中的自动单元高度。 我的一个单元格包含一个UITextView,我需要它根据用户输入进行收缩和扩展-点击以收缩/扩展文本。 我通过向文本视图添加运行时约束并响应用户事件来更改约束的常量来做到这一点: -(void)collapse:(BOOL)collapse; { _collapsed = collapse; if(collapse) [_collapsedtextHeightConstraint setConstant: kCollapsedHeight]; // 70.0 else [_collapsedtextHeightConstraint setConstant: [self idealCellHeightToShowFullText]]; [self setNeedsUpdateConstraints]; } 每当执行此操作时,我都会将其包装在tableView更新中并调用[tableView setNeedsUpdateConstraints]: [tableView beginUpdates]; [_briefCell collapse:!_showFullBriefText]; [tableView setNeedsUpdateConstraints]; // I have also tried // [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop]; // with exactly the same results. [tableView endUpdates]; 当我这样做时,我的单元格确实会展开(并在执行过程中设置动画),但是我收到了约束警告: 2014-07-31 …

30
选择文本字段时使UITableView滚动
经过大量的反复试验后,我放弃了,问了一个问题。我见过很多有类似问题的人,但无法获得所有正确答案的答案。 我有一个 UITableView由自定义单元格组成的。单元格由5个彼此相邻的文本字段组成(有点像网格)。 当我尝试滚动和编辑底部的单元格时 UITableView,无法设法将单元格正确在键盘上方。 我已经看到了很多有关更改视图大小等问题的答案,但是到目前为止,这些方法都效果不佳。 有人可以通过一个具体的代码示例来阐明实现此目的的“正确”方法吗?


20
滑动以删除并单击“更多”按钮(例如,在iOS 7上的“邮件”应用中)
用户在表格视图中滑动单元格时如何创建“更多”按钮(例如ios 7中的邮件应用程序) 我一直在这里和Cocoa Touch论坛中都在寻找这些信息,但是我似乎找不到答案,我希望比我自己更聪明的人可以给我解决方案。 我希望当用户滑动一个表格视图单元时,显示多个编辑按钮(他默认是删除按钮)。在iOS 7的邮件应用中,您可以滑动以删除,但是会出现一个“更多”按钮。

4
如何为TableView创建NSIndexPath
我需要在已定义的函数中删除表的第1行。为了使用,deleteRowAtIndexPath您必须使用已IndexPath定义部分和行的。如何创建这样的索引路径? 以int {1}作为其唯一成员的数组将崩溃;NSLog消息指出还需要定义该部分。 *编辑->与单元格删除有关的代码: NSIndexPath *myIP = [[NSIndexPath alloc] indexPathForRow:0 inSection:0]; NSArray *myArray = [[NSArray alloc] initWithObjects:myIP, nil]; // [self.tableView beginUpdates]; [self.tableView deleteRowsAtIndexPaths:myArray withRowAnimation:UITableViewRowAnimationFade]; // [self.tableView endUpdates];

9
当内容适合屏幕时如何禁用UITableView表中的滚动
我的iphone应用程序中有一些(分组样式)表(仅在屏幕的一部分上,Interface Builder但添加了,但没有从子类添加UITableViewController),这些表中有80%的时间很小,可以放到屏幕上。当表格适合屏幕时,我想禁用滚动功能,以使其更整洁。但是,如果表格不在屏幕上(以后再添加行时),我想再次启用滚动功能(因为否则您将看不到该内容。) 有没有办法做到这一点?我似乎无法弄清楚。我确实知道要这样做: tableView.scrollEnabled = NO; 但是我不确定在哪里,或者我是否必须计算表对象的大小或某种方法才能使其正常工作。 更新:这是最终对我有用的解决方案: if (table.contentSize.height < table.frame.size.height) { table.scrollEnabled = NO; } else { table.scrollEnabled = YES; } 我在调用reloadData表后运行此代码,它计算出正确的大小并似乎可以工作。 table.frame.size.height是Interface Builder屏幕上显示的对象的实际大小(可以在中看到),而是以下table.contentSize.height对象的高度:页眉,页脚和每个单元格加在一起的高度。

9
设置自定义UITableViewCells高度
我正在使用一个自定义UITableViewCell,其中包含一些标签,按钮和要显示的图像视图。单元格中有一个标签,其文本是一个NSString对象,字符串的长度可以是可变的。因此,我无法使用UITableView的heightForCellAtIndex方法为单元格设置恒定的高度。单元格的高度取决于标签的高度,可以使用NSString's sizeWithFont方法确定。我尝试使用它,但是好像我在某处出错。如何解决? 这是用于初始化单元格的代码。 if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) { self.selectionStyle = UITableViewCellSelectionStyleNone; UIImage *image = [UIImage imageNamed:@"dot.png"]; imageView = [[UIImageView alloc] initWithImage:image]; imageView.frame = CGRectMake(45.0,10.0,10,10); headingTxt = [[UILabel alloc] initWithFrame: CGRectMake(60.0,0.0,150.0,post_hdg_ht)]; [headingTxt setContentMode: UIViewContentModeCenter]; headingTxt.text = postData.user_f_name; headingTxt.font = [UIFont boldSystemFontOfSize:13]; headingTxt.textAlignment = UITextAlignmentLeft; headingTxt.textColor = [UIColor blackColor]; dateTxt …

6
在情节提要中,如何制作自定义单元以与多个控制器一起使用?
我正在尝试在正在使用的应用程序中使用情节提要。在该应用程序中,有“ 列表”和“ 用户”,每个列表和用户都包含其他列表的集合(列表的成员,用户拥有的列表)。因此,我有ListCell和UserCell类。目标是使它们在整个应用程序中可重用(即,在我的任何tableview控制器中)。 那就是我遇到问题的地方。 如何在情节提要中创建可在任何视图控制器中重复使用的自定义tableview单元? 这是到目前为止我尝试过的具体操作。 在Controller#1中,添加了一个原型单元,将类设置为我的UITableViewCell子类,设置了重用ID,添加了标签并将其连接到该类的插座。在Controller#2中,添加了一个空的原型单元,将其设置为相同的类,并像以前一样重用ID。当它运行时,当控制器2中显示单元格时,标签将永远不会显示。在控制器1中正常工作。 在不同的NIB中设计每种电池类型,并连接到适当的电池类别。在情节提要中,添加了一个空的原型单元,并设置其类和重用ID以引用我的单元类。在控制器的viewDidLoad方法中,注册那些NIB文件以获取重用ID。如图所示,两个控制器中的单元都像原型一样是空的。 保留两个控制器中的原型为空,并设置类,并将id重用到我的单元格类中。完全用代码构造单元格的UI。单元在所有控制器中都能正常工作。 在第二种情况下,我怀疑原型始终会覆盖NIB,并且如果我杀死原型单元,则可以为重用ID注册我的NIB。但是,那时我将无法设置从单元到其他框架的序列,这实际上就是使用情节提要的全部要点。 归根结底,我想要两件事:在情节提要中连接基于tableview的流,并在视觉上而不是在代码中定义单元格布局。到目前为止,我还看不到如何做到这两个。

18
情节提要中的“自定义单元格行高”设置没有响应
我正在尝试为表格视图中的一个单元格调整单元格高度。我正在从相关单元格的“大小检查器”内的“行高”设置中调整大小。当我在iPhone上运行该应用程序时,该单元格具有表格视图中“行大小”中设置的默认大小。 如果更改表视图的“行大小”,则所有单元格的大小都会更改。我不想这样做,因为我只想要一个单元的自定义大小。我看到很多帖子都提供了针对该问题的程序化解决方案,但如果可能的话,我宁愿通过情节提要进行操作。

26
检测在UITableView中按下了哪个UIButton
我有一个UITableView5 UITableViewCells。每个单元格包含一个UIButton,其设置如下: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSString *identifier = @"identifier"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier]; if (cell == nil) { cell = [[UITableView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; [cell autorelelase]; UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(10, 5, 40, 20)]; [button addTarget:self action:@selector(buttonPressedAction:) forControlEvents:UIControlEventTouchUpInside]; [button setTag:1]; [cell.contentView addSubview:button]; [button release]; …

24
如何取消选择一个选定的UITableView单元格?
我正在做一个必须预先选择特定单元格的项目。 我可以使用来预先选择一个单元格-willDisplayCell,但是当用户单击其他任何单元格时都不能取消选择它。 - (void)tableView:(UITableView*)tableView willDisplayCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath { AppDelegate_iPad *appDelegte = (AppDelegate_iPad *)[[UIApplication sharedApplication] delegate]; if ([appDelegte.indexPathDelegate row] == [indexPath row]) { [cell setSelected:YES]; } } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { AppDelegate_iPad *appDelegte = (AppDelegate_iPad *)[[UIApplication sharedApplication] delegate]; NSIndexPath *indexpath1 = appDelegte.indexPathDelegate; appDelegte.indexPathDelegate = indexPath; [materialTable deselectRowAtIndexPath:indexpath1 animated:NO]; } 你能帮我吗?

19
UITapGestureRecognizer中断UITableView didSelectRowAtIndexPath
我编写了自己的函数,以在键盘出现时向上滚动文本字段。为了通过远离文本字段来关闭键盘,我创建了一个UITapGestureRecognizer,在单击时会在文本字段上退出第一响应者。 现在,我还为UITableView文本字段创建了一个自动完成功能,该功能会在文本字段的下方创建一个自动完成功能,并在用户输入文本时在其中填充项目。 但是,当选择自动完成表中的一项时,didSelectRowAtIndexPath不会被调用。取而代之的是,似乎轻击手势识别器正在被调用,只是辞职了第一响应者。 我猜想有某种方法可以告诉轻击手势识别器将轻UITableView击消息继续传递到,但是我不知道它是什么。任何帮助将不胜感激。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.