У меня была точно такая же проблема, за исключением того, что на полпути к реализации мы решили отказаться от дизайна и вместо этого пошли на выбор пользовательских ячеек таблицы. Наш оригинальный дизайн должен был выглядеть как блокнот с ячейками в каждой строке.
Создание подкласса UITableViewCell может показаться сложной задачей, но оно того стоит, если вам потребуется настроить ячейку в будущем и, похоже, она будет выполнять то, что вы запрашиваете. Я могу опубликовать код для вас из моего проекта, если вам интересно. Однако учтите, что у вас не будет фона для самого UITableView, только для ячеек.
РЕДАКТИРОВАТЬ: размещение кода, связанного с созданием пользовательского UITableViewCell:
Моя ячейка называется HotOffersCell,
Это HotOffersCell.h
#import <UIKit/UIKit.h>
@interface HotOffersCell : UITableViewCell {
IBOutlet UILabel *mainLabel;
IBOutlet UILabel *subLabel;
IBOutlet UILabel *price;
IBOutlet UIImageView *imageView;
}
@property (nonatomic, retain) UILabel *mainLabel;
@property (nonatomic, retain) UILabel *subLabel;
@property (nonatomic, retain) UILabel *price;
@property (nonatomic, retain) UIImageView *imageView;
@end
HotOffersCell.m очень прост, просто sysnthesize для всех свойств, ничего больше
Затем в методе TableView вашего контроллера табличного представления:
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"HotOffersCell";
HotOffersCell *cell = (HotOffersCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"HotOffersCell" owner:nil options:nil];
for (id currentObject in topLevelObjects) {
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = (HotOffersCell *) currentObject;
break;
}
}
}
NewsItem *newsItem = [newsList objectAtIndex:indexPath.row];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"d MMM YY"];
NSString *date = [formatter stringFromDate:newsItem.departure_date];
if (indexPath.row % 2 == 0) {
cell.contentView.backgroundColor = [UIColor colorWithWhite:230.0/255 alpha:1]; // Match Colour
} else {
cell.contentView.backgroundColor = [UIColor colorWithWhite:242.0/255 alpha:1]; // Match Colour
}
cell.mainLabel.text = newsItem.destination;
cell.subLabel.text = [[NSString alloc] initWithFormat:@"%@ - %@ nights", date, newsItem.nights];
if ([self.navigationController.title isEqualToString:@"Top 20"]) {
cell.price.text = newsItem.price_inside;
} else {
cell.price.text = newsItem.price_balcony;
}
cell.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", newsItem.cruise_line]];
[formatter release];
return cell;
}
У меня также есть HotOffersCell.xib. Этот файл содержит UITableViewCell и не имеет представления, я связал все соответствующие ярлыки и ничего более. Он предоставляет хороший графический способ редактирования мест размещения на ярлыке без изменений в коде Я даже позволил моему брату изменить это =)
Надеюсь, это поможет