我在加載UITableView的菜單樣式中使用幻燈片。 - ECSlidingViewController在UITableView中設置菜單,顯示當前項目
我有一個表視圖設置約7細胞如下:
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.contentView.backgroundColor = [UIColor colorWithRed:75.0/255.0 green:83.0/255.0 blue:102.0/255.0 alpha:1.0];
UIView *topSplitterBar = [[UIView alloc] initWithFrame:CGRectMake(0, 0, cell.bounds.size.width, 1)];
topSplitterBar.backgroundColor = [UIColor colorWithRed:62.0/255.0 green:69.0/255.0 blue:85.0/255.0 alpha:1];
[cell.contentView addSubview:topSplitterBar];
cell.textLabel.backgroundColor = [UIColor clearColor];
cell.textLabel.textColor = [UIColor colorWithRed:196.0/255.0 green:204.0/255.0 blue:218.0/255.0 alpha:1];
cell.textLabel.font = [UIFont systemFontOfSize:18.0f];
cell.textLabel.shadowColor = [UIColor colorWithRed:27.0/255.0 green:31.0/255.0 blue:41.0/255.0 alpha:1];
cell.textLabel.shadowOffset = CGSizeMake(0, 1);
UIView *selectedBg = [[UIView alloc] initWithFrame:cell.frame];
selectedBg.backgroundColor = [UIColor colorWithRed:50.0/255.0 green:56.0/255.0 blue:73.0/255.0 alpha:1];
cell.selectedBackgroundView = selectedBg;
什麼是顯示單元作爲selectedBg如果這是當前顯示控制器的最佳方式?
我可以訪問以下例如:
if ([self.slidingViewController.topViewController isKindOfClass:[MESHomeViewController class]]) {
但是,我不知道會在哪裏進行這項設定最佳做法?我能做到這一點的開關情況下的電池標籤設置...例如:
switch (indexPath.row) {
case 0: {
if ([self.slidingViewController.topViewController isKindOfClass:[MESHomeViewController class]]) {
cell.contentView.backgroundColor = [UIColor colorWithRed:50.0/255.0 green:56.0/255.0 blue:73.0/255.0 alpha:1];
}
cell.textLabel.text = NSLocalizedString(@"LMGames", @"Left Menu - Games");
break ;
然而,當從菜單中選擇一個新的項目,我需要每次都重新加載表,是好?每次選擇一個單元格完成一個self.tableView reloadData
,還是有更好的方法來處理這個問題?你
或者在'didSelectRowAtIndexPath'方法中設置'selectedBg'。 – iwasrobbed 2013-05-08 01:39:32
我試着添加這個'UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath]; cell.contentView.backgroundColor = [UIColor colorWithRed:50.0/255.0 green:56.0/255.0 blue:73.0/255.0 alpha:1]; '在didSelectRowAtIndexPath部分,但沒有發生變化? – StuartM 2013-05-08 08:24:08
@iWasRobbed - 好吧我得到這個使用BOOL的工作,但只有自我tableView reloadData。這是我檢查單元格創建,如果單元格當前顯示(如此)。問題是,這是達到這個目標的最好方法嗎?如果我更改了didSelectRowAtIndexPath中的顯示內容,那麼如何確保其他單元格背景是正確的?無需重新加載tableView的數據並在那裏檢查。 – StuartM 2013-05-08 12:47:55