7 Stimmen

Ersetzen einer UIViewController-Stammansicht durch meine eigene Ansicht

Ich versuche, eine UIViewController Root-Ansicht mit einer subclassed UIView zu ersetzen.

In der UIViewController-Klassenreferenz des iPhone SDK wird dies im Abschnitt "Overview" angegeben:

Sie verwenden jede Instanz von UIViewController, um eine Vollbildansicht zu verwalten. Für einen einfachen View-Controller bedeutet dies die Verwaltung der View-Hierarchie, die für die Darstellung des Inhalts Ihrer Anwendung verantwortlich ist. Eine typische View-Hierarchie besteht aus einer Root-View - ein Verweis darauf ist in der View-Eigenschaft dieser Klasse verfügbar - und einer oder mehreren Unteransichten, die den eigentlichen Inhalt darstellen.

Wenn Sie dem Link auf die Ansichtseigenschaft folgen, steht dort:

Wenn Ihr View-Controller keinen zugehörigen View-Controller hat, sollten Sie die loadView-Methode außer Kraft setzen und sie verwenden, um die Root-View und alle ihre Unteransichten zu erstellen.

Wenn dieser Code in loadView platziert wurde, würde er die Root-Ansicht erstellen, vorausgesetzt, ich verwende meine eigene Unterklasse von UIView namens MyView:

self.view = [MyView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];

Danke // :)

6voto

Ed Marty Punkte 39312

Sie haben recht. Die loadView Funktion wird aufgerufen, wenn der View angezeigt werden soll, und die viewController's view Eigenschaft ist die Ansicht, die angezeigt wird, wenn Funktionen wie presentModalViewController:animated: . Wenn Sie Ihre Ansicht aus einer NIB laden, anstatt die loadView Ändern Sie dann einfach die Klasse der Ansicht in Ihre benutzerdefinierte Unterklasse auf der Registerkarte Eigenschaften für diese Ansicht.

1voto

Noah Witherspoon Punkte 56607

Sie sollten beachten, dass alles, was Sie in den view Eigenschaft beibehalten werden soll. Sie sollten also entweder

self.view = [[[MyView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)] autorelease];

o

MyView *v = [[MyView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
self.view = v;
[v release];

um das auszugleichen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X