Я отображаю данные из базы данных в табличном представлении.В табличном представлении ячейка содержит метку динамической высоты в соответствии со значением базы данных. Предположим, я хочу отобразить описание любого города из базы данных в табличном представлении с меткой в ячейке. Я вручную добавил описание в базу данных. Моя проблема в том, что некоторая метка времени не отображаетсяПолное описание, потому что ширина метки в 320 пикселей для телефона и в базе данных sqlite превышает 320. В этом случае все форматирование было нарушено в iphone. Я должен изменить интервал или табуляцию в базе данных, а затем протестировать в iphone. У меня многозаписей, и это очень много времени. И если я даю много пробелов в базе данных, то после завершения описания метка будет отображать пустое пространство.Есть ли способ решить эту проблему форматирования.
Это мой код
- (UITableViewCell *)tableView:(UITableView *)atableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//label to hold description of city
UILabel *label = nil;
//cell identifier for each section oftable
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [atableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]initWithFrame:CGRectZero reuseIdentifier:@"Cell"]autorelease];
//label initialization
label = [[UILabel alloc]initWithFrame:CGRectZero];
[label setLineBreakMode:UILineBreakModeWordWrap];
[label setMinimumFontSize:kFontSize];
[label setNumberOfLines:0];
[label setFont:[UIFont fontWithName:@"Futura" size:13.0]];
label.autoresizingMask = UIViewAutoresizingFlexibleWidth;
[label setTag:1];
//adding label to cell's content view
[[cell contentView]addSubview:label];
[label release];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
// text to display in label in cell
NSString *text = city.Description;
CGSize constraint = CGSizeMake(kCellContentWidth - (kCellContentMargin * 2), 20000.0f);
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:kFontSize]
constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
if (!label)
label = (UILabel*)[cell viewWithTag:1];
[label setText:text];
[label setFrame:CGRectMake(kCellContentMargin,
kCellContentMargin,
kCellContentWidth - (kCellContentMargin *4),
MAX(size.height, 44.0f))];
return cell;
}
//Dynamic size label according to description
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *text = city.Description;
CGSize constraint = CGSizeMake(kCellContentWidth - (kCellContentMargin *2), 20000.0f);
CGSize size = [text sizeWithFont:[UIFont systemFontOfSize:kFontSize] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];
CGFloat height = MAX(size.height , 44.0f);
return height + (kCellContentMargin *2); //returning height of label with font size and constaraint size
}
Мой класс модели для города
@interface City : NSManagedObject
{
}
@property (nonatomic, retain) NSString * Description;
@property (nonatomic, retain) NSString * Name;
@property (nonatomic, retain) NSData * Image;
@property (nonatomic, retain) NSSet* cityToRestaurant;
@property (nonatomic, retain) NSSet* cityToHotel;
@property (nonatomic, retain) NSSet* cityToPlaces;
@end
@interface City (CoreDataGeneratedAccessors)
- (void)addCityToRestaurantObject:(NSManagedObject *)value;
- (void)removeCityToRestaurantObject:(NSManagedObject *)value;
- (void)addCityToRestaurant:(NSSet *)value;
- (void)removeCityToRestaurant:(NSSet *)value;
- (void)addCityToHotelObject:(NSManagedObject *)value;
- (void)removeCityToHotelObject:(NSManagedObject *)value;
- (void)addCityToHotel:(NSSet *)value;
- (void)removeCityToHotel:(NSSet *)value;
- (void)addCityToPlacesObject:(NSManagedObject *)value;
- (void)removeCityToPlacesObject:(NSManagedObject *)value;
- (void)addCityToPlaces:(NSSet *)value;
- (void)removeCityToPlaces:(NSSet *)value;
И файл реализации
#import "City.h"
@implementation City
@dynamic Description;
@dynamic Name;
@dynamic Image;
@dynamic cityToRestaurant;
@dynamic cityToHotel;
@dynamic cityToPlaces;
@end