12

在 Apple iPhone 时钟应用程序中,当用户添加新闹钟时,会弹出一个模式视图。我正在尝试创建一个类似的 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 的大小。我也想不通。

感谢您的任何帮助,您可以提供。

4

5 回答 5

18

UITableViewController 类参考,它:

创建具有正确尺寸和自动调整大小掩码的未配置 UITableView 对象

以及来自iOS的 Table View Programming Guide 的引用,专门解决了这种行为:

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

如果您不希望表格视图控制器设置您的表格视图的大小,那么您需要使用 aUIViewController来代替。请参阅我在上面发布的 iOS 表视图编程指南的链接,了解在走这条路线时要考虑的其他事项。

于 2013-02-10T05:45:43.663 回答
4

我遇到了和你提到的一样的问题。我无法更改 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
于 2014-10-29T13:26:55.347 回答
0

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

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

于 2013-02-10T05:22:28.087 回答
0

我不知道你真正的问题是什么。但是为了改变你的高度,将在编写以下代码UITableView时显示所有行。UITableView

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

请尝试一下。

于 2013-02-10T05:51:40.090 回答
0

您正在使用 uitableview 控制器,而不是使用 uiviewcontroller 添加 uitabelview。现在你可以调整uitableview的大小了。

于 2013-11-15T20:08:17.103 回答