2 つの UILabel、2 つの UITableView、および UITextView を含むビューがあります。表示内容に基づいて 2 つのテーブルをレイアウトしようとしています。最初のテーブルの寸法は問題なく作成できますが、実際のコンテンツに基づいてテーブルの高さを再設定すると、テーブルがビューに表示されなくなります。以下のコード スニペット:
-(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 への呼び出しを取り出すと、テーブルは問題なく表示されます (ただし、ビューのスペースが多すぎます)。その電話をそのままにしておくと、テーブルがまったく表示されません。