Die Schaltfläche „Zurück“ führt zurück zu einem anderen UITableViewController als dem, von dem sie stammt

StackOverflow https://stackoverflow.com/questions/2113387

  •  22-09-2019
  •  | 
  •  

Frage

Angenommen, ich habe UITableViewController A und UITableViewController B.Sowohl A als auch B laden UIView C.Wie stelle ich sicher, dass die Schaltfläche „Zurück“ in C immer zu B zurückkehrt und nicht dorthin, wo sie herkommt?

Hier ein konkretes Beispiel:A=Kontaktfenster in iPhone Skype.B = Chatsfenster, jede Zeile ist ein Chat -Verlauf mit einer anderen Person. C = Chat -Fenster zeigt eine Gespräch mit derselben Person an.

C kann von A oder B geladen werden, aber ich möchte, dass die Zurück-Schaltfläche im Chat-Fenster (C) nur zum Chat-Fenster (B) zurückgeht.

Prost.

War es hilfreich?

Lösung 4

Ich habe die Antwort von Google -Gruppe und folgte seinem Vorschlag, es funktioniert:

Aus Sukima: Ich glaube (obwohl ich keine wirkliche Idee habe), dass diese Anwendungen wie Skype und Beejive tun, wenn es sich um eine Wünsche ansieht. ist eigentlich besser, denn dann wird der Benutzer sehen, dass sich die Ansicht durch die Tatsache geändert hat, dass die Tabbar die Höhepunkte geändert hat. Von: Ich habe den Stackoverflow -Thread weiter gelesen. Ich verstehe jetzt, was du fragst.

Andere Tipps

Es wird Ihnen schwer fallen, dies zu implementieren, vor allem weil es sich um ein schlechtes UI-Design handelt und die API es nicht unterstützt.

Ihr Benutzer erwartet eine Zurück-Schaltfläche, die ihn wie in jeder anderen App, die er verwendet, zur vorherigen Ansicht zurückführt.Der Wechsel zu einer anderen Ansicht wird sie umso mehr verwirren, da es sich nicht um eine Hierarchie, sondern um eine Schleife handelt.Benutzer gehen manchmal zu B-->C-->B, manchmal aber auch zu A-->C-->B-->C.(Wie kommen sie zurück zu A?)

Anstelle eines Zurück-Buttons in C sollten Sie auf der rechten Seite einen Button haben, der Sie immer zu B führt, unabhängig davon, wie Sie zu C gelangt sind.Die gleiche Schaltfläche im gleichen Kontext sollte immer zum gleichen Ergebnis führen.Benutzer sollten sich nicht merken müssen, in welchem ​​unsichtbaren Modus sie sich befinden, um vorherzusagen, welche Aktion eine Schaltfläche haben wird.


Edit01:(Antwort auf die Kommentare unten)

(Dies ist alles von meinem Kopf. Nehmen Sie es mit einem Körnchen Salz.) Sie müssen mit dem Navigationscontroller aufgeben und stattdessen die Ansichten selbst verwalten.Sie müssen die Ansichten über die Registerkartenleiste austauschen, indem Sie in der Ansichtseigenschaft jeder Registerkarte die A- und B-Ansichten durch die C-Ansicht ersetzen.

Ich denke, Sie müssen mit der unsichtbaren Masteransicht beginnen und dann die Tableiste hinzufügen.Erstellen Sie im Master View Controller Attribute/Ausgänge für jede Ansicht.In jeder Ansicht muss ein Attribut/Ausgang mit dem Master-Ansichtscontroller verknüpft sein.Dann haben Sie die „Zurück-Schaltfläche“ (die Sie unbedingt als „Chats“ bezeichnen sollten) der C-Ansichtsaufrufmethode in A und B, die dann eine Methode im Master-Ansichtscontroller aufruft, die (1) die C-Ansicht entweder von der Registerkarte A oder entfernt Registerkarte B (2) wechselt die Registerkarte zur Registerkarte B und lädt dann (3) Ansicht B in Registerkarte B.

Ich kann nicht betonen, wie unbeholfen ich dieses Design finde.Es spielt keine Rolle, ob andere Apps es verwenden.Meiner Erfahrung nach machen große Unternehmen eher Fehler bei der Benutzeroberfläche, weil ihre Marketingabteilungen möchten, dass die Benutzeroberfläche einzigartig aussieht.

Sehen Sie sich im Vergleich dazu an, wie die Telefon-App mit der gleichen Situation umgeht.Unabhängig davon, welche Registerkarte Sie zum Tätigen eines Anrufs verwenden (Favoriten, Kontakte, Tastatur usw.), kehren Sie immer noch zur Ansicht dieser Registerkarte zurück, wenn der Anruf beendet ist.Wenn Sie einen Anruf mit einer anderen Methode tätigen möchten, klicken Sie einfach auf die entsprechende Registerkarte.

Ignorieren Sie das schlechte Beispiel anderer.Warum so viel Zeit und Mühe darauf verwenden, den Fehler eines anderen zu reproduzieren?

Sie werden immer wieder zu der Ansicht zurückkehren, die rief pushViewController

Könnten Sie eine Nachricht senden b, die B anrufen lässt pushViewController?
Ich verstehe Ihre Architektur vielleicht nicht, aber ich glaube, das würde funktionieren.

Wenn Sie dies wirklich tun möchten, können Sie eine Methode in B erstellen, die C drängt, dann B von a (ohne Animation) drücken und die Methode aufrufen, die C übertreibt, wenn Sie C bis B popieren, wird A immer noch darunter sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top