Как работать с UITableView с разной высотой ячейки? - PullRequest
0 голосов
/ 28 июля 2011

каждая ячейка в моей таблице имеет метку, максимум три строки, поэтому высота ячейки зависит от высоты метки, я знаю метод делегата, который возвращает высоту для конкретной ячейки (NSIndexPath), но мне нужно получить фактическую ячейка, чтобы определить высоту, и если я вызываю cellForRow: atIndexPath: in heightForCell:, он зацикливается бесконечно, я думаю, что cellForRow также вызывает heightForCell. Так есть ли способ справиться с этим?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 июля 2011

Используйте – sizeWithFont:constrainedToSize:lineBreakMode: из NSString (вы можете узнать больше об этом на этом портале) или использовать массив, содержащий высоту для каждого indexPath, как показано в этом примере (класс SectionInfo) http://developer.apple.com/library/ios/#samplecode/TableViewUpdates/Introduction/Intro.html.

0 голосов
/ 29 июля 2011

Вы можете использовать размер строки NSStrings в методе heightForRow: делегат, например:

CGSize maxSize = CGSizeMake(300, 800); //max x width and y height
NSString *cellTitle = @"Lorem ipsum";
UIFont *stringFont = [UIFont systemFontOfSize:14]; // use the same font your using on the cell
CGSize cellStringSize = [myString sizeWithFont:stringFont constrainedToSize:maximumSize lineBreakMode: UILineBreakModeWordWrap];

Это даст вам CGSize, который вы затем сможете использовать по высоте и добавить немного отступов. Вы можете найти больше информации здесь: http://developer.apple.com/library/ios/#documentation/UIKit/Reference/NSString_UIKit_Additions/Reference/Reference.html

Тим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...