无法更改UITableView的高度

时间:2013-02-10 05:07:33

标签: iphone uitableview ios6

在Apple iPhone Clock App中,当用户添加新警报时,会弹出模态视图。我正在尝试创建一个类似的UI。

我目前有一个UITableViewController作为UINavigationController的根视图控制器。

我还将UIDatePicker添加为UINavigationController的子视图:

[self.navigationController.view addSubview:mydatePicker];

但是,我的UITableview(UITableViewController)中有大约10行以上,当我添加UIDatePicker时,我无法滚动查看所有单元格。

我意识到UITableView的大小和我添加UIDatePicker之前的大小相同,因此我需要更改它的大小才能滚动查看所有表格单元格。

为了改变它的大小,我尝试了几件事,但都无济于事。在下面的代码中,我任意选择50作为新的高度。

首先,尝试更改边界高度:

CGRect bounds = [self.tableView bounds];
[self.tableView setBounds:CGRectMake(bounds.origin.x,
                                     bounds.origin.y,
                                     bounds.size.width,
                                     50)];

然后尝试更改框架高度:

CGRect tvframe = [self.tableView frame];
[self.tableView setFrame:CGRectMake(tvframe.origin.x,
                                    tvframe.origin.y,
                                    tvframe.size.width,
                                    50)];

然后在谷歌搜索后,我尝试更改contentSize高度:

CGSize thesize = self.tableView.contentSize;
thesize.height = 50;
self.tableView.contentSize = thesize;

这些似乎都没有对UITableView的大小产生任何影响。我仍然无法滚动查看所有单元格。

我后来尝试了一些与上面相同的方法,但是在UINavigationController而不是UITableView上。我也没有太多运气。

作为最后的手段,我试图在Storyboard编辑器中更改UITableView的大小。我也想不出来。

感谢您提供的任何帮助。

5 个答案:

答案 0 :(得分:18)

来自UITableViewController class reference,它:

  

使用正确的尺寸创建未配置的UITableView对象   并自动调整大小掩码

来自Table View Programming Guide for iOS的引文专门解决了这种行为:

  

注意:您应该使用UIViewController子类而不是a   UITableViewController的子类,用于管理视图中的表视图   要管理的是由多个子视图组成,其中只有一个是   表视图。 UITableViewController类的默认行为是   使表视图填充导航栏和之间的屏幕   标签栏(如果存在)。

如果您不希望表视图控制器设置tableView的大小,则需要使用UIViewController。请参阅上面发布的链接,以获取iOS表格视图编程指南,以了解进入此路线时需要考虑的其他事项。

答案 1 :(得分:3)

我遇到了与你提到的相同的问题。 我无法更改UITableViewController的tableView的高度。我尝试改变self.view和self.tableview的框架和中心。但失败了。 然后我通过一个技巧解决了它,改变了tableview的contentInset。

self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 44.0f, 0); // here you can replace 44.0f with your height

答案 2 :(得分:0)

您需要将UITableView作为主视图的子视图,以便可靠地更改其大小。

进行此更改后,框架是正确的值。

答案 3 :(得分:0)

我不知道你的真正问题是什么。但是对于UITableView的更改高度,将显示UITableView中的所有行,并编写以下代码。

self.tblView.frame = CGRectMake(0, 0, 320, 50);

请试一试。

答案 4 :(得分:0)

您正在使用uitableview控制器,代替使用uiviewcontroller,添加uitabelview。现在你可以看到uitableview的大小。