Как можно обнаружить, когда Табличное представление сделано, таща ячейки?
Я получил две маркировки в contentView UITableViewCell. Размер этих маркировок является динамичным. Я смог сделать так путем разделения на подклассы UITableViewCell, в drawRect методе я корректирую кадры двух маркировок в зависимости от их содержания. Теперь я хочу выровнять все вторые маркировки.
Проблема - это, если я использую следующий код:
for (int row = 0; row < [self.tableView numberOfRowsInSection:section]; row++) {
UITableViewCustomCell *cell = (UITableViewCustomCell *)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:row inSection:0]];
NSLog ([cell.labelTwo description]);
}
Вторая маркировка еще не была оттянута, означая, что я не могу определить размер кадра и таким образом не могу найти, что надлежащее x положение выравнивает все вторые маркировки.
Я попытался разделить UITableViewController на подклассы и посмотреть на события, такие как viewDidLoad и viewDidAppear unfortunatly также в этих событиях, ячейки еще не оттянуты.
То, что я хочу, - чтобы табличное представление потянуло ячейки, по крайней мере, однажды, таким образом, я могу определить размеры маркировок в ячейке табличного представления. Я думавший выполнить это цикличным выполнением через все ячейки с cellForRow, но хотя это успешно возвращает ячейку содержание, не привлечен, все же подразумевая, что кадр остается с шириной нуля.
У кого-либо есть решение?
Заранее спасибо,
Mark
Попробуйте позвонить SizeWithFont:
на содержимом этих меток, чтобы получить максимальную ширину, прежде чем делать что-либо. Вы должны быть в состоянии использовать его позже в вашем CellForeatindexPath:
, чтобы настроить ширину, сколько вам нужно.
Я бы порекомендовал вам пересмотреть с использованием uableViewCellStylevalue2
ячеек и попытка настроить TextLabel и DetailTextLabel. У меня была похожая ситуация, а это , как я это сделал.
Я думаю, что вам нужно сделать, это сделать для Добавить ViewController к иметь UiableViewController контролировать сам UiableViewCell, чтобы вы могли записать события нагрузки на этикетки. ViewController будет иметь ссылки на оба ярлыка, поэтому он может соответственно настроить их в ответ на -ViewDiDiDAppear
.
Я никогда не делал этого, но UiableViewCell - это вид, как и любой другой, поэтому вы сможете настроить для него контроллер. Вам может потребоваться вручную активировать контроллер, так как у вас нет навигационного контроллера, чтобы сделать это для вас в этом контексте.
Во-первых, вам действительно нужно просто выбрать явную фиксированную позицию, в которой заканчивается первая метка и начинается вторая, в зависимости от того, что вы знаете о минимальной и максимальной длине текста, который будет помещен в эти метки. . Это полностью устранило бы эту проблему.
Но если вам нужно решение: используйте метод sizeWithFont:
или один из его родственников (см. Документацию Xcode). В частности, прокрутите значения, которые войдут в первые метки, примените к каждому sizeWithFont
и отслеживайте наибольшую ширину, которую вы видите. (Я предполагаю, что у вас есть доступ к значениям до того, как они попадут в ячейки; поскольку они динамические, они должны проходить через контроллер табличного представления, не так ли?)
Теперь у вас есть значение, которое вы ищете, не имея выполнить чрезвычайно расточительную операцию создания группы объектов-ячеек и никогда не использовать их по назначению.