iOS - 以编程方式调整UITableView高度

Jon*_*ham 2 iphone resize frame uitableview ios

我正在尝试使用iOS5和Storyboard 以编程方式调整a中UITableView托管的高度UIViewController.VC显示主/详细记录样式,并UITableView显示详细记录.根据所显示的主记录类型,屏幕底部可能需要一组按钮.如果不需要按钮,那么我希望UITableView延长它的高度以利用可用空间.我正在使用以下代码:

CGRect tableFrame = [tableListView frame];
if (blnApprovalRec == YES)
    tableFrame.size.height = 127;
else
    tableFrame.size.height = 170;
[tableListView setFrame:tableFrame];
Run Code Online (Sandbox Code Playgroud)

每当主记录更改时(包括首次加载屏幕时)都会调用此代码viewDidLoad.问题是当VC加载时,UITableView不会使用指定的大小进行绘制 - 它只使用IB的默认大小进行绘制.一旦用户更改主记录,以便重新加载表,那么一切正常,大小会根据需要更改.我试着强制使用重画setNeedsDisplay,setNeedsLayoutreloadData但这些都不奏效.

Ank*_*kur 11

问题是当VC加载时,UITableView不会使用指定的大小进行绘制

加载表视图时会发生这种情况,但是UI没有刷新.请验证您是否在viewDidLoad或viewWillAppear中强行调用.

希望你的代码是单独的方法:

CGRect tableFrame = [tableListView frame];
if (blnApprovalRec == YES)
   tableFrame.size.height = 127; 
else
   tableFrame.size.height = 170; 
[tableListView setFrame:tableFrame];
Run Code Online (Sandbox Code Playgroud)

最初显示视图时,您可能具有主记录中的默认选定值.您可以在viewWillAppear中的调用函数中设置该值/实例.

你能显示方法名称和代码吗,你如何强有力地调用代码片段?


小智 5

您可以以编程方式调整UITableView的大小,但您也需要以编程方式创建UITableView.不要使用Storyboard.