2013-08-27 4 views
0

Я использую JSON для разбора таблицы. Я использую заголовок и субтитры. Я не хочу, чтобы текст идти с экрана с «...» поэтому я добавилiOS Table View word wrap overlap

cell.textLabel.numberOfLines = 0; 
cell.detailTextLabel.numberOfLines = 0; 

я могу видеть, что она идет на новую строку, но высота ячейки остается неизменным и перекрывает другие из них и выглядит очень плохо. Как я могу сделать это так, чтобы обертывание слов, а высота расширяет объем содержимого в нем?

Спасибо в продвижении.

Ответ на первый ответ: я положил в коде метода UITableViewDelegate и я получаю это:

2013-08-27 15:29:40.940 jsonParse[2392:c07] -[__NSCFDictionary 

sizeWithFont:constrainedToSize:lineBreakMode:]: unrecognized selector sent to instance 0x7580130 
2013-08-27 15:29:40.942 jsonParse[2392:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary sizeWithFont:constrainedToSize:lineBreakMode:]: unrecognized selector sent to instance 0x7580130' 
*** First throw call stack: 
(0x1c93012 0x10d0e7e 0x1d1e4bd 0x1c82bbc 0x1c8294e 0x333a 0x1f9c4e 0x1fc224 0xc0952 0xc02dc 0x2927 0xbd6589 0xbd4652 0xbd589a 0xbd460d 0xbd4785 0xb21a68 0x4615911 0x4614bb3 0x4652cda 0x1c358fd 0x465335c 0x46532d5 0x453d250 0x1c16f3f 0x1c1696f 0x1c39734 0x1c38f44 0x1c38e1b 0x1bed7e3 0x1bed668 0x14ffc 0x1dad 0x1cd5 0x1) 
libc++abi.dylib: terminate called throwing an exception 
+0

вы решили свою проблему, если нет, дайте мне знать ... только что просмотрел ваш скриншот и нашел проблему –

ответ

1

Реализуйте этот метод UITableViewDelegate для нахождения высоты каждой строки во время выполнения и изменить код соответственно

NSString *object = [DataArray objectAtIndex:indexPath.row]; 
    CGSize size = [object sizeWithFont:[UIFont systemFontOfSize:[UIFont systemFontSize]] constrainedToSize:CGSizeMake(300, 9999) lineBreakMode:NSLineBreakByWordWrapping];//set the textLable Frame width according to your layout width. 
    CGFloat height = size.height+20;//you can set the padding accordingly 
    return height; 
} 

Edited для конкретного ответа

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    NSString *title = [[articles objectAtIndex:indexPath.row] objectForKey:@"title"]; 
    NSString *desc = [[articles objectAtIndex:indexPath.row] objectForKey:@"desc"]; 

    CGSize titleSize = [title sizeWithFont:[UIFont boldSystemFontOfSize:18.0] constrainedToSize:CGSizeMake(300, 99999) lineBreakMode:NSLineBreakByWordWrapping]; 
    CGSize descSize = [title sizeWithFont:[UIFont systemFontOfSize:14.0] constrainedToSize:CGSizeMake(300, 99999) lineBreakMode:NSLineBreakByWordWrapping]; 
    return titleSize.height+descSize.height+10; 
} 
+0

посмотри на мой обновленный вопрос –

+0

вы передали объект словаря в объекте NSString. У вас есть объект NSString, который вы устанавливаете в textLabel.text –

+0

также вставляете код - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath этого метода –