UITableViewCell背景图像和选择问题

时间:2010-08-25 08:50:27

标签: iphone uitableview

这是我的第一个iphone应用程序,我在设置tableView样式时遇到了麻烦。

我有两个图像(png),一个用于标准单元状态,另一个用于选定状态。

在我的子类单元格中,我尝试了以下内容:

1)设置前面的backgroundView和selectedBackgroundView

UIImage *ib = [UIImage imageNamed:@"tab.png"];
UIImageView *back = [[UIImageView alloc] initWithImage:ib];
self.backgroundView = back;
[back release];

UIImage *is = [UIImage imageNamed:@"selected_tab.png"];
UIImageView *selected = [[UIImageView alloc] initWithImage:is]; 
self.selectedBackgroundView = selected;
[selected release];

标准单元格正常,但选中后会显示两个图像。

2)只是选择背景视图:

// storing the 2 uiviews in class attributes
UIImage *ib = [UIImage imageNamed:@"tab.png"];
UIImageView *back = [[UIImageView alloc] initWithImage:ib];
self.storedStandard = back;
[back release];
UIImage *is = [UIImage imageNamed:@"selected_tab.png"];
UIImageView *selected = [[UIImageView alloc] initWithImage:is]; 
self.storedSelected = selected;
[selected release];

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    if (selected) {
        self.backgroundView = self.storedSelected;
    }
    else {
        self.backgroundView = self.storedStandard;
    }

}

它几乎可以工作,但图像不适合细胞,我不知道将它们拉伸到细胞的大小。

对我来说,第一个解决方案应该是基于属性名称的解决方案,而第二个解决方案似乎是一个黑客(就像我看到的90%的教程),所以我有点沮丧。

总结:为什么第一个不起作用,我怎么能强制图像占用所有的单元格空间?

非常感谢:)

1 个答案:

答案 0 :(得分:0)

如果你有一个UITableViewDelegate,你应该只能在willSelectRowAtIndexPath:方法中更改backgroundView的图像,然后在didSelectRowAtIndexPath:方法中将其更改回来。然而,这有点像黑客。