2010-08-25 7 views
1

Это мое первое приложение для iphone, и у меня проблемы с дизайном моего TableView.UITableViewCell background image and selection problem

У меня есть два изображения (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

, если у вас есть UITableViewDelegate, вы должны быть в состоянии просто изменить образ backgroundView в в willSelectRowAtIndexPath: метод, а затем изменить его обратно в didSelectRowAtIndexPath: метод. Это немного взломать.