如何在三个20的TableViewController中获取用户定义的背景颜色

时间:2010-09-05 16:30:39

标签: iphone objective-c three20

拥有TTTableViewController实例,我尝试设置当前所选单元格的背景。我知道Three20中的样式表概念,但它只是提供:

- (UITableViewCellSelectionStyle)tableSelectionStyle {
    return UITableViewCellSelectionStyleGray;
}

标准选项UITableViewCellSelectionStyleNone,UITableViewCellSelectionStyleBlue,UITableViewCellSelectionStyleGray。

其次,我知道,UITableView实现只需要一个子类UITableViewCell。可以设置该单元类的selectedBackgroundView:

UIView *myBackView = [[UIView alloc] initWithFrame:self.frame];
myBackView.backgroundColor = [UIColor colorWithRed:1 green:1 blue:0.75 alpha:1];
self.selectedBackgroundView = myBackView;
[myBackView release];

如何在three20的TTTableViewController实例中设置所选单元格的背景颜色?

1 个答案:

答案 0 :(得分:1)

我今晚想到了这一点。我进入了three20UI.xcodeproj并查看了构建UITableViewCell的位置,即数据源,然后我将这个数据源子类化,用于设置我的表。

例如,如果您使用TTSectionedDataSource表,那么您将其子类化,假设我们将其称为MySectionedDataSource,然后在该子类的实现中,您将要执行以下操作:

     - (void)tableView:(UITableView*)tableView 
                  cell:(UITableViewCell*)cell 
 willAppearAtIndexPath:(NSIndexPath*)indexPath { 

            UIView *view = [[UIView alloc] initWithFrame: CGRectMake(cell.frame.origin.x, cell.frame.origin.y, cell.width, cell.height)]; 
               view.backgroundColor = [UIColor colorWithRed:1 green:1 blue:0.75 alpha:1]; 
               cell.selectedBackgroundView = view; 
     } 

应该这样做。

起初我尝试在

中设置selectedBackgroundView
 -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

但这似乎不起作用。我搜索代码以找出原因,即如果控制器,委托,单元格或数据源中的某些内容正在重新设置bg选择,但没有任何内容。我最终不得不在技术上搜索我自己没有解决它...:)

祝你好运。