2013-11-25 84 views
2

我试图用uitableviewcontroller来模仿iTunes的专辑页面,但后来我想我可能会走错了方向。做类似iTunes专辑页面的页面的最佳方式是什么?

我的计划是在tableView: cellForRowAtIndexPath:做点事情。当indexPath.row == 0,我做了专辑的描述(即上半部分),否则我做歌曲的描述(即下半部分)。

这里是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (!cell){ 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 

if (indexPath.row == 0){ 
    CGRect imageFrame = CGRectMake(5, 5, 69, 69); 

    UIImageView *coverFram = [[UIImageView alloc] initWithFrame:imageFrame]; 
    NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"cover" ofType:@"jpg"]; 
    coverFram.image = [[UIImage alloc] initWithContentsOfFile:imagePath]; 

    [cell.contentView addSubview:coverFram]; 
}else{ 
    NSInteger adjustedIndexPathRow = indexPath.row - 1; 

    cell.textLabel.text = [self.cellRow objectAtIndex:adjustedIndexPathRow]; 
} 

return cell; 
} 

有两个地方我没有简单的想法实现它:

首先,在iTunes的专辑页面,有一个分段控制(见图)。当我按其他片段时,说“审查”,上部分保持在那里,而整个下部分已经改变。其次,我不知道如何关闭图像中的间隙显示(红圈)。

所以,我想可能还有其他一些更智能(或更容易)的方法来做到这一点。比如说,是否可以将页面分成两部分:然后由视图做上部分;并通过表格视图做下部分? (只是我的猜测)

请指教。谢谢。

enter image description here

+0

它看起来与图像最顶端的视图是一个表标题视图(其中有一个水平滚动滚动视图或可能在其中的集合视图)。分段控件似乎位于节标题中,因为它在您滚动时粘到屏幕的顶部。当您单击其中一个按钮时,您只需更改表格视图显示的内容。 – rdelmar

回答

2

您的假设是完全正确的。这是你的情况。参考下面的图片。

enter image description here

构建含有专辑封面的视图的顶部部分,它的细节和分段控制。该视图的底部将保留用于视图,该视图将通过基于选定的段实例化其他视图控制器来加载。

+0

谢谢你让我知道正确的方向。如果你还可以提供一些关于'subviewing'表视图的链接/ sample_code,我将不胜感激,因为我不知道如何构建一个表格,而不是拖出一个uitableviewcontroller并'回答'所需的协议功能。 – Newbie

+1

您再次走在正确的轨道上!第一步是拖动一个UITableViewController并响应数据源和委托方法。下一步被称为viewContainment,这个stackoverflow线程有丰富的信息在它http://stackoverflow.com/questions/8379759/how-does-view-controller-containment-work-in-ios-5 – Suhas

+0

thx为您的帮助! – Newbie

1

您可以通过两种方式删除此空白,在IOS 7集separatorInset在UITableView的

1)通过务实

table.separatorInset=UIEdgeInsetsZero; 

2组)或U可以做到这一点way

Screen Shot

+1

感谢您的建议。对于那些会阅读这篇文章的人来说,如果你想关闭第一行的“差距”(在我的情况下),请使用单元格。改为separatorInset = UIEdgeInsetsZero。 – Newbie

1

你的猜测是正确的。更简单的方法(可能是正确的方法)是将整个视图分成两部分。上半部分由图像视图,分割控制组成。底部可以有一个表格视图。现在取决于分段控制中段的选择,您可以轻松地重新载入具有适当内容的表视图

相关问题