2014-02-24 53 views
0

我想在ios應用程序的sectionHeaderView中獲得背景圖像。有些東西不對,我需要釋放它,因爲我有兩個值。sectionHeader在iOS中的背景圖像

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 
    UIImage *myImage = [UIImage imageNamed:@"bar-two.jpg"]; 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:myImage]; 
    imageView.frame = CGRectMake(10,10,1,30); 

    return imageView; 

    APLSectionHeaderView *sectionHeaderView = [self.tblView dequeueReusableHeaderFooterViewWithIdentifier:SectionHeaderViewIdentifier]; 

    APLSectionInfo *sectionInfo = (self.sectionInfoArray)[section]; 
    sectionInfo.headerView = sectionHeaderView; 
    sectionHeaderView.titleLabel.text = sectionInfo.climb.name; 
    sectionHeaderView.section = section; 
    sectionHeaderView.delegate = self; 

    return sectionHeaderView; 
} 
+0

有什麼不對?爲什麼兩個人都回來了,你是否忘記了「如果......其他......」? – simalone

+1

由於'return imageView'行 – Raptor

+0

imageview.frame = CGRectMake(10,10,1,30);因此一半的代碼無法訪問。 您已將imageview寬度保持爲1像素寬度是否正確? – Leena

回答

0

我想你想section based header,嘗試這樣的:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { 

    if(section == 0) { 
    UIImage *myImage = [UIImage imageNamed:@"bar-two.jpg"]; 
    UIImageView *imageView = [[UIImageView alloc] initWithImage:myImage]; 
    imageView.frame = CGRectMake(10,10,1,30); 

    return imageView; 
    } 
    else if (section ==1) { 
    APLSectionHeaderView *sectionHeaderView = [self.tblView dequeueReusableHeaderFooterViewWithIdentifier:SectionHeaderViewIdentifier]; 

    APLSectionInfo *sectionInfo = (self.sectionInfoArray)[section]; 
    sectionInfo.headerView = sectionHeaderView; 
    sectionHeaderView.titleLabel.text = sectionInfo.climb.name; 
    sectionHeaderView.section = section; 
    sectionHeaderView.delegate = self; 

    return sectionHeaderView; 
    } 

    NSAssert (FALSE, @"Undefined header requested"); 

    return nil; 
} 
+0

謝謝,我欣賞幫助,但現在我只在一個單元格中獲得背景圖像,而在另一個單元格中獲得背景圖像。我需要顯示標籤並在所有單元格中顯示背景 – user1155141

+0

爲標題創建自定義UIView,並在其中放置U​​IImageView。在代碼中設置一個圖像,並將信息設置爲IF IF NECARY。所以它將涵蓋兩個方面。 – NeverHopeless

+0

非常感謝,那是票。實際上,我只是將UIImage視圖放在UIBiew中,並將其放置在xib中。再次感謝 – user1155141

0

除此之外,通過@西瓦 - 猛禽提到這樣一個事實,它從來沒有達到一半的代碼(後回報的ImageView;,你被它分配給您的創建於sectionHeaderView強引用sectionInfo.headerView這樣,即使您的部分的頭部被取消分配,sectionHeaderView仍然具有強大的引用,並且永遠不會被釋放(直到sectionInfoArray被釋放)。這是潛在的危險,並且您從不檢查是否你的款信息headerView!如果你打算將它分配給sectionInfo,至少在重新分配它之前檢查它! 另外,如果您正確初始化sectionHeaderView然後將其分配給sectionInfo的headerView,那麼最好練習一下。

 if(!sectionInfo.headerView){ 

      [initialize sectionHeaderView ...] 

      sectionInfo.headerView=sectionHeaderView; 

     } 

     return sectionInfo.headerView; 
+0

所以我真正的問題是如何將圖像添加到sectionHeaderView,而不會干擾我的上述代碼。我只想添加背景圖片,但我需要其他代碼,返回sectionHeaderView;仍然在那裏 – user1155141

+0

@ user1155141我上面提到的代碼是針對您希望引用您的sectionHeaderView的部分,因爲讓我們面對它,您正在設置它的委託,並且沒有強大的參考,您將最終釋放它返回之後......你需要創建一個UIView,添加像圖像視圖,標籤......等任何子視圖,然後返回。 –