Ich habe einen Stammansicht-Controller, der nicht als benutzerdefinierte Klasse für einen meiner View-Controller in meinem Storyboard festgelegt ist. Stattdessen bilden alle meine View-Controller diese Klasse ab.Erkennen, wenn ein Registerkartenelement gedrückt wird
// 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 {
}
Aber ich scheine mit zu kämpfen, etwas zu tun, wenn ein tabbaritem auf dem View-Controller gedrückt wird, die die RootViewController wird Subklassen, das heißt, wird die Nachricht nicht gedruckt wird.
Danke für die runde Antwort. Wenn ich sagen möchte, dass es eine Methode in meinem ViewController gibt, die ich implementieren möchte, wenn der Benutzer eine Tab-Leiste anschlägt, müsste ich entweder VC in TabBarDelegate umwandeln, was Sie alle Unterklassen meiner VC tabbardelegates korrekt darstellen würden, was nicht sinnvoll ist alle. Andere Art und Weise, wenn das, was Sie erwähnt haben. Aber dann wäre ich nur mit der Verwendung von Protokollen oder einer anderen Möglichkeit zum Senden von Nachrichten an meine VC von neuem TabBarController übrig, wenn ich möchte, dass diese Methode in der VC implementiert wird, nicht wahr? – Manganese
@Manganese Dies ist eine architektonische Entscheidung, die auf Ihren Anforderungen basiert. Wie bei den meisten Dingen gibt es mehrere Möglichkeiten, um das zu implementieren, was Sie tun möchten. Wenn Sie genauer erklären können, was Sie vorhaben, teile ich Ihnen gerne meine Gedanken mit. Möchten Sie, dass jede VC die Methode implementiert, auf die Sie sich beziehen? Protokolle können hier nützlich sein, aber andere Optionen sind wahrscheinlich basierend auf Ihren Anforderungen verfügbar. – mbeaty
Großartig, im Grunde habe ich zwei Tab-Bars - eine ist meine Haupt-VC und eine andere ist Einstellungen VC. Die Einstellungen sind wie das Zurücksetzen der Spielstufen, Audio aus/ein usw. Der Haupt-VC ist, wo der Benutzer die meiste Zeit erwartet wird, es sei denn, er/sie möchte einige Einstellungen ändern. Ich möchte, dass mein Haupt-VC weiß, wo eine bestimmte Einstellung geändert wurde. Daher habe ich eine Klasse zum Speichern der Typeigenschaft erstellt, die sich in den Einstellungen der Ansichtsattribute ändert. Von dort aus verwende ich das Ergebnis, um meinen Haupt-VC zu konfigurieren, so dass die Einstellungen wirksam werden, sobald der Benutzer zum Haupt-VC navigiert. – Manganese