2013-02-11 13 views
16
if([segue.identifier isEqualToString:@"Edit"]){ 

    AddCoffeeViewController *avc = [segue destinationViewController]; 

    Coffee *coffeeObj = [appDelegate.coffeeArray objectAtIndex:arow]; 
    NSLog(@"ViewController.m prepareForSegue: arow: %d coffeeName:%@ price:%@  coffeeID:%d",arow,coffeeObj.coffeeName,coffeeObj.price,coffeeObj.coffeeID); 
    [coffeeObj setIsInEditMode:YES]; 
    avc.EditCoffeeObj = coffeeObj; 


} 

Non riesco a ottenere la riga corretta quando si preme il pulsante accessorio.

Anche se nel metodo seguente sto ottenendo la riga corretta. C'è un modo in cui posso ottenere la riga corretta per preparare i seguiti se non voglio usare alcun ivar.riga di percorso dell'indice non in preparazione per i dettagli per la divulgazione dei dettagli

-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath{ 

arow = indexPath.row; 

} 

enter image description here


tableViewCell pulsante accessorio: Esecuzione segue modale (Edit)
+ Button (tasto di navigazione barra articolo): Esecuzione segue modale (Aggiungere)

+0

Perché non è sufficiente posizionare preparare segue direttamente all'interno accessoryButtonTappedForRowWithIndexPath? –

+0

Voglio passare un oggetto classe caffè. se usi [self performSegueWithIdentifier: @ "Edit" sender: nil]; allora c'è qualcuno che possa passare anche un oggetto di classe Coffee. –

+0

NOTA: la chiamata ai passaggi da un pulsante accessorio è stata introdotta per la prima volta in iOS6. Una buona soluzione è creare una cella personalizzata e aggiungervi un pulsante e chiamare il seguito da quel pulsante. – Groot

risposta

34

Se è stata collegata un'azione accessoria nello storyboard, lo sender in prepareForSegue:sender: sarà la cella toccata. Questo significa che si può solo fare qualcosa di simile

NSIndexPath *indexPath = [self.tableView indexPathForCell:sender]; 
+0

hey la tua soluzione era corretta. Grazie mille. Non capisco perché alcune persone stanno dando un post negativo alla mia domanda. Devi solo provare a risolvere lo stesso problema. –

+0

Ti amo amico. Grazie mille –

+0

grazie mille amico. – shaikh

3

pulsante accessori sfruttato e fila selezionata sono due cose diverse. Nell'accessorioButtonTappedForRowWithIndexPath, basta impostare indexPath su una variabile globale e quindi utilizzarlo nel seguito.

0

SWIFT 3.0 Solution; Molto simile alla versione Objective-C. Così Cell è mittente e riceviamo il indexPath attraverso cellulare in cui accessorio premuto

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if let destination = segue.destination as? YourViewController { 
     let indexPath = tableView.indexPath(for: sender as! UITableViewCell)! 
    } 
} 
Problemi correlati