Ich habe eine theoretische Frage. Jetzt lese ich Apples ViewController- Handbuch.
Sie schrieben:
Wenn es an der Zeit ist, einen Controller für präsentierte Ansichten zu schließen, besteht der bevorzugte Ansatz darin, den Controller für präsentierte Ansichten entlassen zu lassen. Mit anderen Worten, wann immer möglich, sollte derselbe Ansichtscontroller, der den Ansichtscontroller vorgestellt hat, auch die Verantwortung für die Entlassung übernehmen. Obwohl es verschiedene Techniken gibt, um den Controller für die präsentierende Ansicht zu benachrichtigen, dass sein Controller für die präsentierte Ansicht entlassen werden sollte, ist die Delegierung die bevorzugte Technik.
Aber ich kann nicht erklären, warum ich ein Protokoll in der präsentierten VC erstellen und eine delegierte Variable hinzufügen muss, eine Delegatenmethode in der präsentierten VC erstellen muss, um die präsentierte VC zu schließen, anstatt einen einfachen Aufruf in der präsentierten View-Controller-Methode
[self dismissViewControllerAnimated:NO completion:nil]
?
Warum ist die erste Wahl besser? Warum empfiehlt Apple es?
presentingViewController
meistens nutzlos ist, da sie sich auf das in eins eingebetteteUINavigationController
if beziehtself
. In diesem Fall können Sie das überhaupt nicht bekommenpresentingViewController
. Funktioniert[self dismissViewControllerAnimated:completion]
in diesem Fall jedoch immer noch. Mein Vorschlag wäre, das weiterhin zu verwenden, bis Apple es behebt.