2015-10-18 10 views
6

Sto tentando di implementare accessoryButtonTappedForRowWithIndexPath: in Swift 2 su un UITableViewController.Implementazione di AccessButtonTappedForRowWithIndexPath: in Swift 2

Come spiegato di seguito, penso che mi manchi qualcosa quando creo il disclosureIndicator, ma non so cosa. Viene estratto dal codice, ma la mia azione target non viene chiamata. UGH!

Per eseguire questa operazione a livello di codice, è necessario aggiungere l'indicatore detailDisclosure in cellForRowAtIndexPath prima che venga restituito il mio cell. Sto facendo che come segue:

// Create disclosure indicator button in the cell 
let disclosureIndicatorButton = UIButton(type: UIButtonType.DetailDisclosure) 
disclosureIndicatorButton.addTarget(self, action: "disclosureIndicatorPressed:event:", forControlEvents: UIControlEvents.TouchUpInside) 
customCell.accessoryType = .DisclosureIndicator 

Nel mio codice, il detailDisclosure chevron ottiene disegnati, ma il metodo di azione di destinazione ho assegnato ad esso non viene chiamato.

poi ho bisogno di creare un gestore per il pulsante quando è premuto:

func disclosureIndicatorPressed(sender: UIButton, event: UIControlEvents) { 
    print("disclosure button pressed") 
    // convert touches to CGPoint, then determine indexPath 
    // if indexPath != nil, then call accessoryButtonTappedForRowWithIndexPath 
} 

Infine accessoryButtonTappedForRowWithIndexPath contiene il codice per eseguire la segue, che posso fare. Cosa mi manca?

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDelegate_Protocol/#//apple_ref/occ/intfm/UITableViewDelegate/tableView:accessoryButtonTappedForRowWithIndexPath:

risposta

12

Non certo perché si sta aggiungendo indicatore del pulsante divulgazione del genere nel codice.

Quello che state cercando è semplicemente processo in 2 fasi -

Fase 1: Aggiungi corretta accessoryType sulla cella:

cell.accessoryType = .DetailDisclosureButton 

Fase 2: Agire quando il pulsante viene toccato dal creazione della funzione accessoryButtonTappedForRowWithIndexPath:

override func tableView(tableView: UITableView, accessoryButtonTappedForRowWithIndexPath indexPath: NSIndexPath) { 
    doSomethingWithItem(indexPath.row) 
} 
+0

Questo era il mio problema. 'DisclosureIndicator' è solo un piacere per gli occhi, non fa altro che essere disegnato. Il 'DetailDisclosureButton' in realtà può avere azioni legate ad esso. Grazie per avermi fatto quadrato. – Adrian

+1

Felice di averlo aiutato! Saluti :)! – Abhinav

Problemi correlati