rolagem @UITableView trava o aplicativo

Prefáci: Sou novo no iPhone SDK, Obj-C, Interface Builder e Cocoa. Provavelmente estou fazendo algo obviamente errado.

Questã: Eu tenho umUITableView que trava se eu rolar. Ele rolará um pouco para revelar a célula completa da célula mais semi-oculta inferior, mas não carregará a próxima. Da mesma forma, se eu passar pela parte superior para ocultar completamente a parte inferior da célula e ela voltar a mostrar essa célula, ela travará antes de mostrá-la. Isso me parece estranho, porque está desenhando as primeiras 7 de 11 células corretamente. Os dados da célula estão em umNSArray, em umUITableViewController vinculado como odataSource edelegate para oUITableView no Interface Builder. Funciona quando a visualização é inicializada.

Estou fazendo um aplicativo com o qual pensei ter terminado há 2 dias, que apenas calcula combinações e exibe uma lista delas no que eu pensei que seria uma visualização conveniente da tabela de rolagem. No momento, ele nem calcula tudo, oNSArray noDataSource é inicializado uma vez com algumas strings como@"Hello" e@"World".

Passos para reproduzi: Como estou usando o IB, não posso mostrar exatamente a história completa no código. Então, vou descrever o que fiz até agora e torcer para que não fique com son

Faça um novo "Aplicativo da barra de guias" no Xcode, porque eu quero duas guias e não quero uma barra de navegação nem uma tabela em tela cheia. Mudei oMainWindow.xib primeira guia de @ é vista emFirstView.xib como um análogo ao dadoSecondView.xib. Isso funcionou bem. Modifiquei a visualização para conter doisUITextFields para entradas e umUITableView para saída. Isso funcionou, mas a mesa estava vazia. Eu subclassifiquei oUITableViewController em que eu preenchi umNSArray propriedade chamadacombinations com 11 strings e depois adicionou

// Set up the cell...
cell.userInteractionEnabled = NO;
cell.text = [combinations objectAtIndex:indexPath.row];

onde havia apenas o comentário. No IB, adicionei umTable View Controller aoFirstView.xib e defina o nome da classe para corresponder ao nome dessa nova subclasse e arraste com a teclaTable View na minha opinião sobre issoCombinations Table View Controller duas vezes. Depois de vincular odataSource e uma vez que odelegate. Embora eu tenha o mesmo comportamento, se apenas odataSource é ligado

Isso executa e preenche as linhas visíveis da tabela (6.5) com os 7 primeiros valores nodataSource combinations. EUpod role 0,5 células para baixo e faça o backup. Mas se eu rolar mais de 0,5 células para cima ou para baixo, o aplicativo falhará. A explicação no relatório diz:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '*** -[NSCFTimer tableView:cellForRowAtIndexPath:]:
unrecognized selector sent to instance 0x52ca40'

Eu não fiz umNSCFTimer nem o vinculei ao meuTable View, Suspeito que ocellForRowAtIndexPath é exatamente uma mensagem que deveria ter ido para o meudataSource oudelegate Então, eu estou confuso com o porquê de ter se desviado e para onde acabou ind

Atualiza: Obrigado pelas respostas e comentários. Meu problema parece ser que oCombinationsTableViewController (subclasse deUITableViewController) não é realmente instanciado em nenhum lugar específico no meu código. Ele é criado há algum tempo (quando oFirstView.xib é carregado) e aparentemente é gerenciado enquanto o tableView inicial é preenchido com 7 células e depois é liberado. Então, eu preciso identificar onde / como fazer uma referência retida para este controlador. MinhasApplication Delegate provavelmente deve ter alguma saída que contenha esse controlador que possa ser vinculado como a instância que está noxib. Sim, sou novo nisso. Sei que poderia eliminar esses problemas evitando o IB e fazendo coisas explicitamente no código, mas acho que quero aprender a usar o IB de maneira flexíve

Finalment: Sim, eu precisava de uma instância retida do controlador de exibição de tabela. Parece elementar, mas isso não ficou claro quando eu trabalhei com o IB. Leia minha própria postagem para todo o processo e corrij

A parte, de lad: O depurador precisa de instruções detalhadas (todos os links são apreciados) ou não funciona muito bem. Parece que consigo obter mais informações mais rapidamente, deixando o aplicativo travar e lendo o relatório que gera. Mas isso requer um término tedioso, um relançamento e três cliques. Eu realmente queria passar disso para ligar as entradas, fazer o cálculo e atualizar a tabela a cada alteração. Essa deveria ser a parte mais difícil, não fazer com que um membro da estrutura funcion

Further rambling: Tudo isso no iPhone SDK para 2.2.1. Na época, o iPhone OS 3.0 não beta ainda não estava disponível sem ingressar no clube por dinheiro vivo. Eu esperava que fosse na abertura da WWDC 2009, mas foi realmente hoje (17 de julho de 2009) que o SDK público 3.0 gratuito foi disponibilizad

questionAnswers(12)

yourAnswerToTheQuestion