2013-05-07 62 views
0

我在加載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,還是有更好的方法來處理這個問題?你

+0

或者在'didSelectRowAtIndexPath'方法中設置'selectedBg'。 – iwasrobbed 2013-05-08 01:39:32

+0

我試着添加這個'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

+0

@iWasRobbed - 好吧我得到這個使用BOOL的工作,但只有自我tableView reloadData。這是我檢查單元格創建,如果單元格當前顯示(如此)。問題是,這是達到這個目標的最好方法嗎?如果我更改了didSelectRowAtIndexPath中的顯示內容,那麼如何確保其他單元格背景是正確的?無需重新加載tableView的數據並在那裏檢查。 – StuartM 2013-05-08 12:47:55

回答