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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top