UabableView Cell IndexPath
-
23-09-2019 - |
Pergunta
Alguém pode me dizer como posso obter um célula indexPath? Eu estava salvando o IndexPath no TableView: CellForgoTindexPath: Método, mas isso só carrega quando a célula é visualizada e eu preciso saber seu caminho de índice no método ViewDidload. Isso resultou em um valor nulo porque, como eu disse, apenas carrega seu valor depois que a célula foi vista uma vez.
Obrigada.
EDITAR
A intenção é poder pular para uma célula específica que tenha seu número específico, mas não é linear com as seções e as linhas contam.
Solução
Use o método indexPathForCell: na Tabelaview, dado um ponteiro para um UITableViewCell
ele retorna seu indexPath.
Você pode colocar o scrollToRowAtIndexPath:atScrollPosition:animated:
no viewWillAppear
método se ainda não estiver configurado em viewDidLoad
. De qualquer forma, este é um lugar melhor se a visualização puder aparecer mais de uma vez depois de ser carregada, como quando um controlador de exibição modal, ele invoca renuncia.
Outras dicas
UMA UITableViewCell
não tem um NSIndexPath
propriedade. o UITableViewDataSource
Delegate define métodos que pedem uma célula para um determinado NSIndexPath
, mas isso não significa que a célula tenha algum relacionamento duradouro com um NSIndexPath
propriedade.
Talvez ajudasse se você explicasse mais do que queria essa propriedade? O que você quer fazer com a localização da célula em viewDidLoad
?
Tente este..
NSSet *touches = [event allTouches];
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:EventlistTable_obj];
NSIndexPath *indexPath = [EventlistTable_obj indexPathForRowAtPoint: currentTouchPosition];
NSLog(@"Selected row:%d in section:%d",indexPath.row,indexPath.section);
Ligue assim:
[cell.fourth_image_button addTarget:self action:@selector(Btn_pressed:event:) forControlEvents:UIControlEventTouchUpInside];
Parece -me que você respondeu sua própria pergunta: você não pode. Porque a célula não possui um IndexPath quando o ViewDidload é executado. E, de fato, ele também não tem um mais tarde, porque a mesma célula pode ser reutilizada para estar em outro índice dentro de um décimo de segundo, se você usar o desactação de células (boa palavra!), O que você deveria.
EDIT: Ok, acho que vejo o que você quer: você está salvando o indexPath em algum lugar quando entrega a célula à tabela. Nota: Se você não fizer isso, não há como você realmente saber em qual indexPath uma célula específica é colocada, pelo menos não se você estiver fazendo as coisas da maneira que deveria.
Portanto, o que você pode fazer é simplesmente criar todas as células do seu método ViewDidload, armazená -las em uma matriz e, quando a visualização da tabela as solicita, basta entregá -las a partir dessa matriz.
Observe que essa não é uma boa maneira de preencher uma visualização de tabela, porque impede que as células sejam reutilizadas. Uma maneira melhor seria salvar o conteúdo Das células (UIViews simples) na matriz e adicione -as como crianças à visualização de conteúdo da célula antes de devolver a célula. Isso permitiria o reuse-reuse, o que é crucial para um bom desempenho. Se você não tem mais células do que se encaixa na tela, no entanto, não precisa se preocupar em reutilizá -las.