这是我的第一个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%的教程),所以我有点沮丧。
总结:为什么第一个不起作用,我怎么能强制图像占用所有的单元格空间?
非常感谢:)
答案 0 :(得分:0)
如果你有一个UITableViewDelegate,你应该只能在willSelectRowAtIndexPath:方法中更改backgroundView的图像,然后在didSelectRowAtIndexPath:方法中将其更改回来。然而,这有点像黑客。