Isso está no iPhone 0S 2.0. As respostas para 2.1 também são boas, embora eu não conheça nenhuma diferença em relação às tabelas.
Parece que deve ser possível agrupar o texto sem criar uma célula personalizada, pois a UITableViewCell
contém um UILabel
por padrão. Sei que posso fazê-lo funcionar se criar uma célula personalizada, mas não é isso que estou tentando alcançar - quero entender por que minha abordagem atual não funciona.
Eu descobri que o rótulo é criado sob demanda (uma vez que a célula suporta acesso a texto e imagem, por isso não cria a visualização de dados até que seja necessário), por isso, se eu fizer algo assim:
cell.text = @""; // create the label
UILabel* label = (UILabel*)[[cell.contentView subviews] objectAtIndex:0];
então eu recebo um rótulo válido, mas a configuração dele numberOfLines
(e lineBreakMode) não funciona - ainda recebo texto de linha única. Há muita altura no UILabel
texto a ser exibido - estou retornando um grande valor para a altura em heightForRowAtIndexPath
.
fonte
Atualização da resposta de Tim Rupe para iOS7:
fonte
Um breve comentário / resposta para registrar minha experiência quando tive o mesmo problema. Apesar de usar os exemplos de código, a altura da célula da exibição de tabela estava se ajustando, mas o rótulo dentro da célula ainda não estava se ajustando corretamente - a solução era carregar a minha célula a partir de um arquivo NIB personalizado, o que ocorre após o ajuste da altura da célula.
E eu tinha minhas configurações dentro do arquivo NIB para não quebrar o texto e só tinha 1 linha para o rótulo; as configurações do arquivo NIB estavam substituindo as configurações que eu ajustei dentro do código.
A lição que tomei foi a de ter sempre em mente o estado dos objetos em cada momento - eles podem não ter sido criados ainda! ... alguém na fila.
fonte
Se quisermos adicionar apenas texto na
UITableView
célula, precisamos apenas de dois delegados para trabalhar (não é necessário adicionar maisUILabels
)1)
cellForRowAtIndexPath
2)
heightForRowAtIndexPath
Esta solução funcionou para mim: -
Aqui a string
mutArr
é uma matriz mutável da qual estou recebendo meus dados.EDIT: - Aqui está a matriz que eu peguei.
fonte
Agora, as visualizações de tablaturas podem ter células de auto-dimensionamento. Defina a visualização da tabela da seguinte maneira
tableView.estimatedRowHeight = 85.0 //use an appropriate estimate tableView.rowHeight = UITableViewAutomaticDimension
Referência Apple
fonte
Eu uso as seguintes soluções.
Os dados são fornecidos separadamente em um membro:
O manuseio pode ser feito facilmente
cellForRowAtIndexPath
. Defina a célula / defina a fonte e atribua esses valores ao resultado "célula". Observe quenumberoflines
está definido como "0", o que significa pegar o que é necessário.Em
heightForRowAtIndexPath
, calculo as alturas do texto agrupado. O tamanho do código deve estar relacionado à largura da sua célula. Para o iPad, esse valor deve ser 1024. Para o iPhone e iPod 320.fonte
Achei isso muito simples e direto:
por exemplo:
Essa pode ou não ser a melhor abordagem / padrão para isso, mas funcionou no meu caso.
fonte
Tente meu código rapidamente. Este código também funcionará para UILabels normais.
Agora ligue simplesmente assim
fonte
Eu acho que essa é uma solução melhor e mais curta. Apenas formate o
UILabel
(textLabel
) da célula para calcular automaticamente a altura especificandosizeToFit
e tudo ficará bem.fonte
Eu não acho que você pode manipular uma base
UITableViewCell's
privadaUILabel
para fazer isso. Você pode adicionar um novoUILabel
para a célula-se e usarnumberOfLines
comsizeToFit
a dimensioná-lo adequadamente. Algo como:fonte