更改视图大小后,tableview消失

时间:2011-01-24 23:09:00

标签: iphone objective-c ipad uitableview positioning

以下代码:

self.dataTableViewController = [[DataTableViewController alloc] initWithStyle:UITableViewStylePlain];
CGRect tableViewRect = self.dataTableViewController.view.frame;
tableViewRect.origin.x = 0.0f;
tableViewRect.origin.y = 91.0f;
//tableViewRect.size.width = 320.0f;
//tableViewRect.size.height = 613.0f;
self.dataTableViewController.view.frame = tableViewRect;
[self.view addSubview:self.dataTableViewController.view];

我的tableviewcontroller显示,一切正常,它也位于正确的位置。 但是我的桌子大小不正确。如果我取消注释size属性的两行代码,tableview将从我的uiview中消失,我不明白为什么。

一些想法?

//编辑:

好吧,这是一种奇怪的行为。 我的tableview显示我的tableview在splittableviewcontroller(左侧)

self.contentSizeForViewInPopover = CGSizeMake(320.0, 704.0);对我的popovercontroller没有任何影响。我从splittableviewcontroller模板中将其保留为默认值。如果我处于纵向模式,它总是全高。

取消注释tableViewRect.size.height = 613.0f;有效,取消注释宽度。将我的身高设置为613px我获得了一张313px高的桌面视图。什么!?将我的身高设置为913.0f,它在风景和肖像方面都很完美。我不明白的是,在景观中它应该只有613像素高。我想将我的popover的高度设置为与我在景观中的viewcontroller相同的高度,这样我的tableview总是高613。不知道那里发生了什么。

我的913px的桌面视图:

landscape

portrait

2 个答案:

答案 0 :(得分:1)

您正尝试将表格视图作为另一个视图的子视图插入。然后你尝试指定一个框架。 可能发生的情况是,即使您指定了框架,您的表仍然是另一个视图的子视图,然后它将受到您最初设置的任何自动调整规则的约束。那么你有没有检查过明确设置框架与表自动调整掩码没有冲突? 特别是,您可以尝试通过为表自动调整掩码设置值

UIViewAutoresizingNone
(建议在viewDidLoad方法中执行此操作)。

答案 1 :(得分:0)

它对我有用...你的代码是在一个表视图控制器中,还是在其他一些类中?我试过这个(并且有效):

CGRect tableViewRect = self.tableView.frame;

tableViewRect.origin.x = 0.0f;
tableViewRect.origin.y = 91.0f;
tableViewRect.size.width = 320.0f;
tableViewRect.size.height = 613.0f;

self.tableView.frame = tableViewRect;

[self.tableView setNeedsLayout];
[self.tableView setNeedsDisplay];

BTW我认为iPhone的尺寸是320 x 480,所以我不确定你为什么要在那里使用613.