2012-04-11 10 views
3

Nun, wie ich im Betreff sage, ist mein Problem, dass ich programmatisch eine Zelle in einer Tabellenansicht mit der Absicht auswähle, automatisch den zugehörigen Abschnitt auszuführen . Ich habe den Code, um dies auf dem ViewWillAppear des zugeordneten Tableviewcontrollers zu tun.Die programmgesteuerte Auswahl einer Zelle in einer Tabellenansicht führt den zugehörigen Abschnitt nicht aus

Das Ergebnis ist, dass die Zelle ausgewählt ist, aber der Übergang nicht ausgeführt wird. Weißt du, warum?

Durch Moment bin ich die Durchführung der Segue programmatisch auf der viewWillAppear das Problem zu lösen, aber ich bin neugierig, warum der Übergang nicht automatisch durchgeführt, wenn die Zelle ausgewählt ist ...

By the way . Der Übergang muss in Ordnung sein, denn wenn ich die Zelle tippe, funktioniert es richtig.

Weitere Informationen: Ich arbeite an einem Splitviewcontroller. Linke Seite hat den Tableviewcontroller und das Segment zeigt einen Viewcontroller auf der rechten Seite

Vielen Dank!

Carlos

Verwandte Code:

- (void) viewWillAppear:(BOOL)animated 
{ 
[super viewWillAppear:animated]; 

// Si no hay ninguna fila seleccionada, seleccionaremos la primera 

// Obtenemos la fila seleccionada 
NSIndexPath *filaSeleccionadaPath = [self.tableView indexPathForSelectedRow]; 

// Si no hay ninguna fila seleccionada 
if (!filaSeleccionadaPath) 
{ 
    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
    [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; 

} 

}

+0

Code-Schnipsel ist erforderlich? –

+0

haben Sie versucht: [Zelle setSelected: YES animiert: YES]; – CarlJ

+0

Gleiches Ergebnis mit [Zelle setSelected: YES animiert: YES]; – Carlos

Antwort

6

Die Dokumentation auf UITableView gibt:

Aufruf dieser Methode nicht die Delegierten verursachen eine Tableview zu erhalten: willSelectRowAtIndexPath: oder tableView: didSelectRowAtIndexPath: message, noch sendet es UITableViewSelectionDidChang eNotifikationsbenachrichtigungen an Beobachter.

daher wird es keine Aktionen auslösen. Wenn Sie Segmente verwenden, möchten Sie möglicherweise performSegueWithIdentifier:sender: für die Klasse UIViewController verwenden (höchstwahrscheinlich self). Sie können eine Kennung und das sendende Element (höchstwahrscheinlich die Zelle) angeben.

+0

Ok, ich verstehe. Danke vielmals! – Carlos

Verwandte Themen