Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 重置UiTableView表格高度导致表格消失_Iphone_Ios_Uitableview - Fatal编程技术网

Iphone 重置UiTableView表格高度导致表格消失

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

我有一个带有两个UILabel、两个UITableView和一个UITextView的视图。我正试图根据这两个表将显示的内容来布局它们。我可以很好地创建初始表格尺寸,但是当我根据表格的实际内容重置表格高度时,表格将不再显示在视图中。下面的代码片段:

-(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表格完全占用了它所需的空间。我想对第二张表格也这样做,使它直接显示在第一张表格的下方。如果有更简单的方法,我完全赞成。我只是不知道如何做。谢谢你的帮助!