Frage

Die Anwendung zeigt Informationen zu Planeten, ihren Monden usw.. Es zeigt eine Liste von Planeten an, lässt den Benutzer einen Planeten auswählen und seine Details anzeigen und dann ein Lesezeichen/unBookmark. Ich habe eine Ansicht, in der Benutzer die Details des ausgewählten Planeten angezeigt werden. Sie enthält auch eine Schaltfläche "Hinzufügen/Entfernen". Wenn der Benutzer auf diese Schaltfläche klickt, wird dieses Lesezeichen hinzugefügt/entfernt und eine andere Ansicht über die aktuelle Ansicht gedrückt, um dem Benutzer zu sagen, dass das Lesezeichen gelöscht wurde.

Die Frage ist nun, wenn der Benutzer auf die Schaltfläche zurück/Planet -Details links von der Navigationsleiste klickt, die in der Statusansicht angezeigt wird, und er kehrt zur Planetendetails -Ansicht zurück. Er wird immer noch die Schaltfläche hinzufügen/entfernen (je nachdem, welche zuvor angezeigt wurde), während es es sollte nun entfernen/hinzufügen (gemäß der zuvor geladenen Taste) gemäß dem Code, den ich geschrieben habe.

Was ich verstehen kann, ist, dass die Statusansicht, wenn der Benutzer auf diese Back -Schaltfläche klickt, die vorherige Ansicht nicht neu geladen wird. Gibt es eine Möglichkeit, dass ich Apps setNeedsDisplay für App -Ausführen von Apps zum Ausladen des Lesezeichendetails machen könnte.

Oder gibt es eine andere Lösung?

Es ist sehr verwirrend für den Benutzer, da er glaubt, dass er das Lesezeichen gerade entfernt/hinzugefügt hat, aber der Knopf fordert ihn immer noch auf, hinzuzufügen/zu entfernen ...

Diese Statusansicht wird auch nach einem anderen Abschnitt des Code verwendet, um dem Benutzer einer Aktion Ergebnisse anzuzeigen Laden Sie seine Inhalte neu ... ...

War es hilfreich?

Lösung

Nehmen Sie den Code, der die Schaltfläche in der ViewDidload -Methode festlegt, und verschieben Sie ihn in ViewSWILLAPINEAR. Es sollte die Schaltfläche ordnungsgemäß aktualisieren, wenn Sie die Ansicht erneut eingeben.

Andere Tipps

Ich habe eine Lösung gefunden: Ein solcher Code (Schaltfläche, das nach einem PopviewController oder solchen Ereignissen geändert wird) sollte in Viewwillapear geschrieben werden, damit sie jedes Mal ausgeführt werden, wenn die Ansicht geladen wird, egal was passiert.

Vielen Dank an Quentarez und Crackity_Jones auf #iphonedev unter irc.freenode.net.

Setzen Sie den Delegierten korrekt und

- (void)navigationController:(UINavigationController *)navigationController
                 willShowViewController:(UIViewController *)viewController
                 animated:(BOOL)animated
{
    NSLog(@"navigationController willShowViewController");
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top