2013-11-25 78 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

你的猜測是正確的。更簡單的方法(可能是正確的方法)是將整個視圖分成兩部分。上半部分由圖像視圖,分割控制組成。底部可以有一個表格視圖。現在取決於分段控制中段的選擇,您可以輕鬆地重新載入具有適當內容的表視圖

相關問題