Ho un controller di visualizzazione radice che non è impostato come classe personalizzata per nessuno dei miei controller di visualizzazione sullo storyboard. Invece, tutti i miei controller di vista stanno sottoclassi questa classe in questo modo.Rileva quando viene premuto un elemento della barra delle schede
// RootViewController
class RootViewController: UIViewController, UITabBarDelegate {
// This is not getting executed on any of the view controllers
func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
print("ddd")
}
}
// Subclassing it
class TopStoriesViewController: RootViewController {
}
ma mi sembra di essere alle prese con fare qualcosa quando si preme un tabbaritem sul controller della vista che viene sottoclasse il RootViewController, cioè, il messaggio non viene stampato.
Grazie per la risposta a tutto tondo. Se diciamo che c'è un metodo nel mio ViewController che voglio implementare quando l'utente colpisce qualche tabbar, o dovrei trasformare il mio VC in TabBarDelegate, che hai citato correttamente renderà tutte le sottoclassi dei miei VC tabelegate, che non è utile a tutti. Altro modo se quello che hai menzionato. Ma poi mi resterebbero solo con l'utilizzo di protocolli o qualche altro modo per inviare messaggi al mio VC dal nuovo TabBarController se voglio che quel metodo nel VC sia implementato, non è vero? – Manganese
@Manganese Si tratta di una decisione architettonica basata sulle vostre esigenze. Come con la maggior parte delle cose, ci saranno molti modi per implementare ciò che vuoi fare. Se puoi dare maggiori dettagli su ciò che stai cercando di fare, sarei felice di condividere i miei pensieri. Vuoi che ogni VC applichi il metodo a cui ti stai riferendo? I protocolli possono essere utili qui, ma altre opzioni sono probabilmente disponibili in base alle vostre esigenze. – mbeaty
Ottimo, in pratica ho due barre di tabulazione: una è la mia VC principale e un'altra è VC delle impostazioni. Le impostazioni sono come azzeramento dei livelli di gioco, spegnimento/accensione dell'audio ecc. Il VC principale è dove ci si aspetta che l'utente sia la maggior parte delle volte, a meno che non voglia modificare alcune impostazioni. Voglio che il mio VC principale sappia dove è stata modificata una determinata impostazione. Quindi, ho creato una classe per memorizzare la proprietà type che cambia in modifica in Impostazioni Visualizza attributi. Da lì, utilizzo il risultato per configurare il mio VC principale, in modo che non appena l'utente naviga verso il VC principale, le impostazioni diventino effettive. – Manganese