Frage

Ich versuche, ein teilweise Überlagerungsmodal in meiner App mit dem Code aus "semi-modal (transparenten) Dialogen auf dem iPhone" unter ramin.firoozye.com zu implementieren. Die Overlay -Funktionalität funktioniert und rutscht das Modal in Sicht. Wenn Sie jedoch eine Ibaktion vom Regler des Modals aufrufen, bewirkt ein nicht anerfasser Selektor, der an Instanz gesendet wurde.

Ich habe die grundlegende Funktionalität mit isoliertem Code nachgebildet und den gleichen Fehler ausgelöst. Um zu sehen, wovon ich spreche, können Sie Laden Sie das Testprojekt hier herunter.

Ich bin sicher, ich vermisse hier nur etwas Einfaches. Jede Hilfe wäre sehr geschätzt.

War es hilfreich?

Lösung

Wenn Sie Ihren ModalViewController in testViewController displayModal:, geben Sie Ihren ModalController (Zeile 20) frei. Tun Sie dies nicht - Sie brauchen den ViewController, um am Leben zu bleiben. Wenn Sie es veröffentlichen, bleibt nur die Ansicht am Leben (wie sie als Unteransicht hinzugefügt wird).

In ModalViewController Hidemodalended veröffentlichen Sie auch ModalView, das Sie nicht behalten haben, also würde ich diese auch entfernen.

Jetzt müssen Sie also nur die Instanz von ModalViewController veröffentlichen, nachdem die Ansicht entfernt wurde. Sie können dies durch [Selbstveröffentlichung] tun; In Hidemodalended, aber dies scheint ein ungewöhnliches Muster zu sein, und ich fühle mich nicht gut.

Einige Vorschläge:

  • Halten Sie die Show und verbergen Sie die Methoden in derselben Klasse.
  • Halten Sie einen Ivar mit dem Controller.
  • Eine andere Möglichkeit: Entfernen Sie den ModalViewController insgesamt und setzen Sie alles in TestViewController ein - aber das hängt sehr davon ab, wie viel Aktion in der realen Sache vorhanden sein wird.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top