Iphone 重置UiTableView表格高度导致表格消失
我有一个带有两个UILabel、两个UITableView和一个UITextView的视图。我正试图根据这两个表将显示的内容来布局它们。我可以很好地创建初始表格尺寸,但是当我根据表格的实际内容重置表格高度时,表格将不再显示在视图中。下面的代码片段:Iphone 重置UiTableView表格高度导致表格消失,iphone,ios,uitableview,Iphone,Ios,Uitableview,我有一个带有两个UILabel、两个UITableView和一个UITextView的视图。我正试图根据这两个表将显示的内容来布局它们。我可以很好地创建初始表格尺寸,但是当我根据表格的实际内容重置表格高度时,表格将不再显示在视图中。下面的代码片段: -(void)viewDidLoad { // code to set up the first two UILabels (one of which is clinic name) ... // // Create the address tab
-(void)viewDidLoad
{
// code to set up the first two UILabels (one of which is clinic name)
...
//
// Create the address table
//
CGRect addrRect = self.view.bounds ;
CGFloat addrStart = clinicNameRect.origin.y + (clinicNameRect.size.height)*1.5 ;
addrRect.origin.y = addrStart;
addrRect.size.height -= addrStart ; // setting it to size of rest of view which is not what I want
addressList = [[UITableView alloc] initWithFrame:addrRect style:UITableViewStyleGrouped] ;
[addressList setDataSource:self] ;
[addressList setDelegate:self] ;
[addressList setAutoresizingMask:UIViewAutoresizingFlexibleHeight |
UIViewAutoresizingFlexibleWidth] ;
[addressList setBackgroundColor:clr] ;
[addressList setBackgroundView:nil] ; // no background
[[self view] addSubview:addressList] ; // tried moving this to after with same result
// have the system layout the table, then reset the height to actual size
[addressList layoutIfNeeded];
CGRect newFrame = [addressList frame] ;
newFrame.size.height = [addressList contentSize].height ;
// make the table's frame exactly match its size
[addressList setFrame:newFrame] ;
// go to set up next UITableView...
如果调用setFrame:我的表看起来很好(但是占用了视图太多的空间)。如果我保留该调用,则该表根本不会出现。请阅读有关
[UIView bounds]
和[UIView frame]
之间差异的文档
虽然在某些特定情况下可以更改边界中的原点,但您真正想要的是更改帧
另外,frame
和bounds
都是可设置动画的属性。设置新值将启动动画,如果您随后访问该值,则不必获取当前值。是否使用故事板/自动布局?NSStringFromCGRect
将真正简化此代码。以编程方式布局视图,因为我希望第二个表在第一个表增长时向下移动。当我使用XIB时,随着第一个表的增长,它被第二个表遮住了。也许我做错了什么,还是个新手。谢谢,菜鸟。我还在想这些。我改为使用框架,但我的根本问题仍然存在。更改UITableView的大小时,它将从视图中消失。我以为问题出在origin.y上,但它仍然没有重新绘制表格。如果删除调整表大小的代码,表将显示在我想要的位置,但它太大了。当我调整它的大小时,它完全消失了。有什么想法吗?@DanNichols您的代码几乎无法理解,例如,为什么要将表格的高度设置为其内容的高度?还要设置两次表格的框架(首先在initWithFrame:
中,然后使用setBounds:
(或setFrame:
)似乎有点奇怪。我建议您先简化代码,也许您会发现问题所在。让我看看是否可以更好地解释我正在尝试做的事情(因此暂时忽略我的代码)。我有一个视图,其中有两个表。我希望每个表始终显示其整个单元格集。但是,在创建它之前,我无法知道它将有多大。因此,我创建了一个占据屏幕其余部分的UITableView。然后,通过调用LayoutFneeded:我可以确定表的实际大小。我想重置space表格完全占用了它所需的空间。我想对第二张表格也这样做,使它直接显示在第一张表格的下方。如果有更简单的方法,我完全赞成。我只是不知道如何做。谢谢你的帮助!