在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的大小。我也想不出来。
感谢您提供的任何帮助。
答案 0 :(得分:18)
来自UITableViewController
class reference,它:
使用正确的尺寸创建未配置的UITableView对象 并自动调整大小掩码
来自Table View Programming Guide for iOS的引文专门解决了这种行为:
注意:您应该使用
UIViewController
子类而不是aUITableViewController
的子类,用于管理视图中的表视图 要管理的是由多个子视图组成,其中只有一个是 表视图。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的大小。