2013-06-05 131 views
0

我不明白爲什麼這會起作用,但我在使其工作時遇到了一些麻煩。免責聲明:這是我的第一個iOS應用程序(或任何Apple開發的應用程序,應用程序需要在昨天完成,所以請原諒任何看起來很匆忙的代碼)。如何在UITableView中設置UITableViewCell的選定背景顏色

我使用SWRevealViewController庫來創建一個Facebook的esque「側視圖」時,主視圖導航控制器上的按鈕被點擊。它很棒,喜歡它。這個視圖擁有一個只有兩個靜態單元的UITableView,並且我剛剛收到一個將單元添加到視圖底部的請求。

嘗試將第三個單元「放入」UITableView中似乎並不明顯,因此在我的xib中,我只是在UITableView之外創建了一個UITableViewCell,並將它放在視圖的底部。然後使用標準IBOutlet工作流程將其連接到我的控制器。

返回我的viewDidLoad我將流氓細胞剝皮看起來像其他表格單元格,添加了一些措辭,添加了一個處理程序讓它在點擊時打開我公司的網站,並且所有這些都很好。我在tableView:cellForRowAtIndexPath函數中爲「常規」表格單元格做了所有這些工作。

但由於某種原因,當我點擊單元格時,它不會像我點擊它時突出顯示的那樣突出顯示其他常規單元格!爲什麼!

CODE:

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil){ 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } else { 
     [[cell.contentView viewWithTag:1] removeFromSuperview]; 
    } 

    UILabel *lblView = [[UILabel alloc] initWithFrame:CGRectMake(20.0, 3.0, 187.0, cell.frame.size.height)]; 
    [lblView setFont:[UIFont fontWithName:@"FuturaStd-Bold" size:12]]; 
    lblView.textColor = [UIColor colorWithRed:(255/255.f) green:(241/255.f) blue:(204/255.f) alpha:1.0]; 
    lblView.tag = 1; 
    if (indexPath.row == 0){ 
     [lblView setText:@"SCHEDULE"]; 
    } else if (indexPath.row == 1){ 
     [lblView setText:@"SPEAKERS"]; 
    } 
    lblView.backgroundColor=[UIColor clearColor]; 

    [cell.contentView addSubview:lblView]; 

    UIImageView *av = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 277, 58)]; 
    av.backgroundColor = [UIColor clearColor]; 
    av.opaque = NO; 
    av.image = [UIImage imageNamed:@"blackBar.png"]; 
    cell.backgroundView = av; 

    UIView *bgColorView = [[UIView alloc] init]; 
    [bgColorView setBackgroundColor:[UIColor colorWithRed:(240/255.f) green:(145/255.f) blue:(62/255.f) alpha:1.0]]; 
    [cell setSelectedBackgroundView:bgColorView]; 

    return cell; 
} 

上面的代碼工作正常,我的 「普通細胞」。在我返回單元格之前的最後一點是當它被「單擊」時背景突出顯示爲奇怪的橙色。

下面的代碼是相同的東西,但在我的viewDidLoad,它不會設置單擊時背景突出顯示顏色。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    //... stuff 

    UILabel *lblView = [[UILabel alloc] initWithFrame:CGRectMake(20.0, 3.0, 187.0, _roguecell.frame.size.height)]; 
    [lblView setFont:[UIFont fontWithName:@"FuturaStd-Bold" size:12]]; 
    lblView.textColor = [UIColor colorWithRed:(255/255.f) green:(241/255.f) blue:(204/255.f) alpha:1.0]; 
    [lblView setText:@"IT'S A SECRET LOL"]; 
    lblView.backgroundColor=[UIColor clearColor]; 

    [_roguecell.contentView addSubview:lblView]; 

    UIImageView *av = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 277, 58)]; 
    av.backgroundColor = [UIColor clearColor]; 
    av.opaque = NO; 
    av.image = [UIImage imageNamed:@"blackBar.png"]; 
    _roguecell.backgroundView = av; 

    UIView *bgColorView = [[UIView alloc] init]; 
    [bgColorView setBackgroundColor:[UIColor colorWithRed:(240/255.f) green:(145/255.f) blue:(62/255.f) alpha:1.0]]; 
    [_roguecell setSelectedBackgroundView:bgColorView]; 

    UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; 
    [_roguecell addGestureRecognizer:singleFingerTap]; 
} 

或許這是與我的XIB文件我有UITableView的向下延伸的整個觀點,與流氓的UITableViewCell「頂部」它(而不是在它很明顯)。我試着弄亂桌子和牢房的位置,但那沒有做任何事。

感謝您的閱讀。

+0

因此,您將流氓單元添加到表視圖標題? –

+0

@verbumdei不,我的廈門國際銀行視圖層次結構如下所示: -UIView --UIToolbar --UILabel --UITableView --UITableViewCell – trainface

+0

如果你的表使用靜態的細胞,你甚至不應該執行表視圖數據源方法。您應該將IBOutlet添加到單元格或UI元素本身,並將它們填充到viewDiLoad中,就像您使用其他任何標籤或圖像視圖一樣。 – rdelmar

回答

0

我最終刪除了我的流氓UITableViewCell,並將UITableView中的單元總數從2增加到4.第3個單元格刪除了我的自定義背景,沒有添加任何文本,禁用用戶交互,並使用- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath方法設置高度以填充表格的其餘部分,只留下底部足夠空間以容納我的「頁腳」單元格。

相關問題