2012-02-01 20 views
26

Estoy teniendo un problema con didSelectRowAtIndexPath de UITableView de iOS 5, que es correcto en iOS 4.UITableView didSelectRowAtIndexPath no ser llamado en primer grifo

La primera vez que pulsa en cualquier fila de la tabla, el método no hace ser llamado. Una vez que selecciono otra fila, ella llama a didSelectRowAtIndexPath, pero pasa el último indexPath.

He establecido ya tableView.delegate, y puede ejecutarse correctamente en ios4.

MainView.xib 
UITabBarController 
    --UINavigationController 
     --**UITableViewController** 

¿Alguna sugerencia?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.tableView.delegate = self; 
    self.tableView.dataSource = self; 
} 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return 10; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    } 
    cell.textLabel.text = [[NSString alloc]initWithFormat:@"%d",indexPath.row]; 
    return cell; 
} 

#pragma mark - Table view delegate 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"%d",indexPath.row); 
} 
+29

¿Se puede publicar el código? ¿Estás seguro de que no has implementado didDeselectRowAtIndexPath en su lugar? – Anna

+0

No implementé deselect. Gracias. –

+0

Esto debería funcionar sin problemas. ¿Esta clase es una subclase de UITableViewController? Si es así, no hay necesidad de establecer delegar en el método viewDidLoad porque ya está asignado. De lo contrario, agregue delegado en el archivo .h de clase entre paréntesis . –

Respuesta

0

Conecte Delegate from Xib a Files Owners. Entonces, intenta que funcione.

1

Intente cambiar su -viewDidLoad por el código siguiente (inserte la última línea). Cuéntame sobre los resultados.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.tableView.delegate = self; 
    self.tableView.dataSource = self; 
    [self.tableView reloadData]; 
} 
0

añadir este código en su método viewDidLoad

[self.tableView reloadData] 
1

No estoy seguro de si esto ha sido contestada, pero yo estaba corriendo con este tema y al igual que "Anna Karenina" comentó anteriormente. Asegúrese de prestar mucha atención a los detalles.

Ésta es la causa por la que anula la selección de la aplicación de la

-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath 

Esto hará que la primera posición de no trabajar, sino siguientes clics y cualquier otra célula funcionará como se espera.

Solución: asegúrese de prestar atención y utilizar didSelectRowAtIndexPath

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

esperanza de que ayude y como menciono antes de que esta se resolvió por "Anna Karenina"

32

Es posible que haya implementado (nótese la Deseleccionar): didDeselectRowAtIndexPath

... de ahí el gatillo al seleccionar una nueva celda que desele cts el primero, y el registro de indexPath como el primero también.

SOLUCIÓN:didSelectRowAtIndexPath

sí, se ven muy similares, y no ayuda a que didDeselectRowAtIndexPath es el primer método de autocompletar de Xcode selecciona la mayor parte del tiempo.

código completo:

// right 
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {} 
+1

gracias! Me preguntaba por qué mi vista de alerta mostraba los detalles de la última fila seleccionada. –

+0

Acabo de llegar aquí por un problema muy similar que estaba teniendo con mi proyecto iOS8 Swift. Esto es exactamente lo que hice. ¡Gracias! – Jase

+0

Ayudaría un poco si ** audaz ** selecciona y deselecciona. Se necesita un poco de atención para verlo. – gjpc

0

que tenía un UIGestureRecognizer en la vista interior del guión gráfico. Tuve que quitarlo y funcionó de forma normal.

0

También tuve este problema al pasar datos a otro VC.Lo resolví cambiando a una transición manual de la tabla VC al detalle VC.

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     selectedData = data[indexPath.row] 

     performSegue(withIdentifier: "Detail", sender: self) 
} 
+0

cómo eso debería resolver si el método didselect se está llamando en absoluto? por favor, ayúdame a entender más gracias :) – ahmedHegazi

Cuestiones relacionadas