Я пытаюсь добавить пользовательские метки в свою ячейку в UITableView. Когда я пытаюсь сделать это, дисплей не работает, и я не могу понять, что именно происходит. Пожалуйста, найдите изображение ниже, и я опубликую метод, который я написал ..
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//cell.textLabel.font=[UIFont systemFontOfSize:16];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
NSString *contact=[contactKeys objectAtIndex:[indexPath section]];
NSArray *contactSection=[contactNames objectForKey:contact];
NSMutableArray *sugar=[db sugarId];
if (isSearchOn) {
NSString *cellValue = [searchResult objectAtIndex:indexPath.row];
NSArray *splitText = [cellValue componentsSeparatedByString:@":"];
NSString *contactText = [NSString stringWithFormat:@"%@ %@", [splitText objectAtIndex:1], [splitText objectAtIndex:0]];
//NSString *result=[contactText stringByAppendingString:[sugar objectAtIndex:[indexPath row]]];
firstLabel=[[[UILabel alloc]initWithFrame:CGRectMake(10, 10, 300, 40)]autorelease];
firstLabel.tag =40; //This should be a constant probably
firstLabel.font = [UIFont systemFontOfSize:[UIFont labelFontSize]];
firstLabel.text = contactText;
[firstLabel sizeToFit];
[cell.contentView addSubview:firstLabel];
sugarLabel = [[UILabel alloc] initWithFrame:
CGRectMake(10+firstLabel.frame.size.width+2, 10, 300, 60)];
sugarLabel.tag =40; //This should be a constant probably
//sugarLabel.font = [UIFont boldSystemFontOfSize:16];
sugarLabel.text = [sugar objectAtIndex:[indexPath row]];
[sugarLabel setHidden:YES];
[cell.contentView addSubview:sugarLabel];
cell.textLabel.text =firstLabel.text;
} else {
NSString *cellText = [contactSection objectAtIndex:[indexPath row]];
// split the text by the : to get an array containing { "AAA", "BBB" }
NSArray *splitText = [cellText componentsSeparatedByString:@":"];
// form a new string of the form "BBB AAA" by using the individual entries in the array
NSString *contactText = [NSString stringWithFormat:@"%@ %@", [splitText objectAtIndex:1], [splitText objectAtIndex:0]];
firstLabel=[[[UILabel alloc]initWithFrame:CGRectMake(10, 10, 300, 40)]autorelease];
firstLabel.tag =40; //This should be a constant probably
//firstLabel.font = [UIFont systemFontOfSize:[UIFont labelFontSize]];
firstLabel.text = contactText;
[firstLabel sizeToFit];
[cell.contentView addSubview:firstLabel];
sugarLabel = [[UILabel alloc] initWithFrame:
CGRectMake(10+firstLabel.frame.size.width+2, 10, 300, 60)];
sugarLabel.tag =40; //This should be a constant probably
//sugarLabel.font = [UIFont boldSystemFontOfSize:16];
sugarLabel.text = [sugar objectAtIndex:[indexPath row]];
[sugarLabel setHidden:YES];
[cell.contentView addSubview:sugarLabel];
NSString *result=[NSString stringWithFormat:@"%@ %@",firstLabel.text,sugarLabel.text];
cell.textLabel.text=result;
}
Рисунок 2: Это модификация кода, предложенная BP. Результат здесь под ..
EDIT:
Всякий раз, когда я пытаюсь написать stringWithFormat или вышеприведенный оператор, память не освобождается и метки перекрываются друг с другом. Есть ли способ решить эту проблему .. пожалуйста, помогите мне .. Я потратил больше половины дня, пытаясь понять это, но не повезло