abi*_*son 16 objective-c uitableview ios ios5 ios6
所以我有一个非常基本的问题.我UITableView在a中有这个view,我想使这个表的高度尽可能高,以显示表中的所有行.因此,我不希望能够滚动,我只想要显示所有行.(行数量是动态的height).
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CGSize cellSize = [[[_stepsArray objectAtIndex:indexPath.row]content] sizeWithFont:[UIFont boldSystemFontOfSize:18.0f] constrainedToSize:CGSizeMake(528.0f, CGFLOAT_MAX)lineBreakMode:NSLineBreakByWordWrapping];
return cellSize.height;
}
Run Code Online (Sandbox Code Playgroud)
如果有20行,则表格会非常高,但如果只有1行,则会非常小,而其他内容将不会出现在19行以下.
Edw*_*dar 23
如果我理解正确,你应该能够为每一行加上高度,并根据它调整tableview高度:
CGFloat tableHeight = 0.0f;
for (int i = 0; i < [_stepsArray count]; i ++) {
tableHeight += [self tableView:self.tableView heightForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];
}
self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y, self.tableView.frame.size.width, tableHeight);
Run Code Online (Sandbox Code Playgroud)
你可以在[tableView reloadData]之后立即执行此操作
下面是更简单的解决办法:你只需要设置sizeToFit你的UITableView,已经填充了单元格后.如果你设置delegate并dataSource通过xib,你可以在你的viewDidLoad方法中执行此操作,或者viewDidAppear像这样:
- (void)viewDidLoad
{
[super viewDidLoad];
[yourTableView sizeToFit];
}
Run Code Online (Sandbox Code Playgroud)
但是,如果添加delegate并dataSource在代码的某个地方,你必须把sizeToFit在此之后:
- (void)someMethod
{
[yourTableView setDelegate:self];
[yourTableView setDataSource:self];
[yourTableView sizeToFit];
}
Run Code Online (Sandbox Code Playgroud)
另外,你必须在reloadTable之后执行此操作,如果你在某个地方这样做的话.
这会将您的桌子精确调整到高度,这是它的单元格高度的总和!
| 归档时间: |
|
| 查看次数: |
23928 次 |
| 最近记录: |