自定义表格中的第一个单元格以显示Netflix应用程序(即更大/不同)的最佳方法是什么?为了便于将来使用,我被要求尽可能使用IB,以便日后编辑。
这是Netflix表的照片。 http://cl.ly/3j1d473d1j160502160t
答案 0 :(得分:3)
使用表格标题视图。将视图拖到表视图的顶部,它将成为“表标题视图”。
如果你有其他基本上不变的“单元格”(并且可能打开/关闭)你可以考虑在你的xib中放置UITableViewCell
个对象,并从tableView:cellForRowAtIndexPath:
委托方法返回它们。还要实现tableView:heightForRowAtIndexPath:
方法。
两者都可以具有相同的大纲,例如:
-(UITableViewCell*)tableView:(UITableView*)tv cellForRowAtIndexPath:(NSIndexPath*)ip
{
if ( ip.section==0 ) return headerCell;
// ...handle regular cells
}
-(CGFloat)tableView:(UITableView*)tv heightForRowAtIndexPath:(NSIndexPath*)ip
{
if ( ip.section==0 ) return headerCell.frame.size.height;
// ...handle regular cells
return 44;
}
答案 1 :(得分:1)
要么使它不是单元格(如表格的标题视图),要么实现-[UITableViewDelegate tableView:heightForRowAtIndexPath:]
以返回不同的高度。您可以使用IB来安装表头,但攻击此问题的更复杂方法将需要在代码中工作。
答案 2 :(得分:0)
以下是您可以使用的代码段。它是表格的标题视图...
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
if(section==0){ UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableview.frame.size.width, 44)];
[view setBackgroundColor:[UIColor redColor]]; UILabel
*label=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 44)];
[label setText:@"Hello!!"];
[label setBackgroundColor:[UIColor clearColor]];
[view addSubview:label]; return view;
}return nil;
} 在这里您可以设置tableViewHeaderSection的高度。
(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
返回100; }