6

In poche parole, nella mia app dispongo di un controller per la visualizzazione della diapositiva con una tabella posteriore VC e una tabella anteriore VC. Una cella selezionata nella tabella posteriore VC dovrebbe passare al VC della tabella anteriore (incorporata in un VC di navigazione). Per illustrare, qui ci sono le impostazioni pre-change isolate e il codice con esso funziona correttamente:SWRevealViewCellula del pennino del controllore non in esecuzione segue

enter image description here enter image description here enter image description here

Ecco il codice di lavoro semplificato in mia tabella di nuovo metodo cellForRowAtIndexPath di VC:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let navigationCell = tableView.dequeueReusableCellWithIdentifier("NavigationCell", forIndexPath: indexPath) as UITableViewCell 
    return navigationCell 
} 

Ok, sulla parte divertente. Tutto quello che voglio è sostituire l'UITableViewCell predefinito mostrato sopra con una delle mie celle personalizzate in un file Xib. Ora illustrerò cosa ho modificato. Innanzitutto, ecco la mia cella Xib nel mio file NavigationCell.xib. Niente di speciale.

enter image description here enter image description here

mio NavigationCell codice di classe è semplicemente

import UIKit 

class NavigationCell: UITableViewCell { 
    @IBOutlet var nameLabel: UILabel! 
} 

Infine, ho modificato il mio codice in mia tabella di nuovo VC per registrare il Xib e annullare l'accodamento della cella personalizzato:

override func viewDidLoad() { 
    super.viewDidLoad() 
    let navigationCellNib = UINib(nibName: "NavigationCell", bundle: nil) 
    tableView.registerNib(navigationCellNib, forCellReuseIdentifier: "NavigationCell") 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let navigationCell = tableView.dequeueReusableCellWithIdentifier("NavigationCell", forIndexPath: indexPath) as! NavigationCell 
    return navigationCell 
} 

Tutti gli altri codici e le specifiche rimangono gli stessi. Lo storyboard seguito per la nuova cella personalizzata è ancora della classe SWRevealViewControllerSeguePushController come mostrato nel primo screenshot per questa domanda. Ho semplicemente sostituito l'UITableViewCell con la mia cella Xib personalizzata.

Questa modifica è stata sufficiente per impedire il verificarsi dei passaggi. Con questa modifica, dopo la creazione e l'esecuzione quando faccio scorrere il menu di navigazione VC del tavolo posteriore e seleziono una delle mie celle di navigazione personalizzate (che vengono visualizzate correttamente), non viene attivato alcun passaggio. qualche idea?

+0

Ho usato SWRevealController prima e questa roba diventa complicata. Hai provato a seguire un setController invece di pushController? – NSGangster

+0

L'ho passato avanti e indietro inutilmente. Quando tocco la cella di navigazione si evidenzia nel grigio chiaro di default e attiva il metodo 'didSelectRowAtIndexPath', ma questo è quanto basta. – Aaron

+0

Ecco un tutorial che ho usato quando per la prima volta mi sono cimentato con SWRevealController http://www.appcoda.com/ios-programming-sidebar-navigation-menu/ Hai la maggior parte di esso nella sezione intitolata Implementazione del menu Selezione articolo. sembra che tu abbia bisogno di un identificatore di seguito e di prepararti per il metodo dei passi. Assicurati anche di avere gli identificatori di sw_front, sw_rear seguiti. Questo è un buon tutorial. – NSGangster

risposta

4

Sono un idiota. Ho dovuto eseguire i passaggi a livello di codice in didSelectRowAtIndexPath.

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    self.performSegueWithIdentifier("MySegue", sender: self) 
}