Bessere Möglichkeit, die Ansicht zu zwingen, Teilansichten frühzeitig zu laden
Vor kurzem habe ich einen Code geschrieben, in dem ich versucht habe, auf eine Steckdose auf einem zu verweisenUIViewController
Ich hatte gerade mit instanziiert[storyboard instantiateViewControllerWithIdentifier]
und ändern Sie die Unteransicht, auf die der Ausgang zeigte, bevor Sie denViewController
. Es hat nicht funktioniert, weil dieViewController
Die Ansicht von hatte noch keine Unteransichten geladen, einschließlich derjenigen, auf die sich meine Steckdose bezog. Die Eigenschaft hat mir also nur einen Nullzeiger gegeben.
Nachdem ich (mit etwas Mühe) die Ursache meines Problems im Debugger aufgespürt hatte, googelte ich herum und lernte durch Antworten wiedieses, dass ich die Ansicht dazu veranlassen kann, ihre Unteransichten zu laden, ohne dass sie durch Aufrufen dermyViewController.view
Getter. Danach kann ich problemlos auf meine Steckdose zugreifen.
Es ist jedoch ein klarer Hack und Xcode mag es - zu Recht - nicht und protestiert verärgert mit dieser Warnung:
Eigenschaftenzugriffsergebnis nicht verwendet - Getter sollten nicht für Nebenwirkungen verwendet werden
Gibt es eine nicht-hackige Alternative, bei der das nicht missbraucht wird?.view
Getter? Gibt es alternativ kanonische / idiomatische Muster für dieses Szenario, bei denen beispielsweise dynamisch ein Handler hinzugefügt wird, der aufgerufen wird, sobald die Unteransichten geladen werden?
Oder ist die Standardlösung einfach zu ersetzenmyViewController.view
mit[myViewController view]
Xcode Warnung zum Schweigen zu bringen, und dann mit dem Hack leben?