我不明白爲什麼這會起作用,但我在使其工作時遇到了一些麻煩。免責聲明:這是我的第一個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「頂部」它(而不是在它很明顯)。我試着弄亂桌子和牢房的位置,但那沒有做任何事。
感謝您的閱讀。
因此,您將流氓單元添加到表視圖標題? –
@verbumdei不,我的廈門國際銀行視圖層次結構如下所示: -UIView --UIToolbar --UILabel --UITableView --UITableViewCell – trainface
如果你的表使用靜態的細胞,你甚至不應該執行表視圖數據源方法。您應該將IBOutlet添加到單元格或UI元素本身,並將它們填充到viewDiLoad中,就像您使用其他任何標籤或圖像視圖一樣。 – rdelmar