2010-12-29 4 views
0

Ich arbeite an der Erstellung einer iPhone-Version einer Android-App, die ich geschrieben habe (also bitte mit mir ertragen). Die Anwendung hat eine Hauptansicht, die im Wesentlichen eine Webansicht und einige andere Steuerelemente anzeigt, die die Webansicht steuern. Ich habe bereits diesen Teil der Anwendung auf einem UIWindow arbeiten.Loading UITabBarController von separaten XIB in Windows App auf dem iPhone

Der andere Teil der Anwendung ist eine Profilseite, auf der der Benutzer Profilinformationen in ein Formular eingeben kann. Aufgrund der schiere Anzahl der Optionen, habe ich die Schnittstelle in einem separaten XIB mit einem UITabBarController zusammen, um alles zusammen zu halten. Ich habe bereits eine Delegate-Klasse für diesen Teil der Anwendung, damit ich mit den Formularfeldern in den Views arbeiten kann.

Wenn die App gestartet wird, soll sie beim ersten Start die Profilansicht für den Benutzer anzeigen und später die Profilansicht anzeigen, wenn der Benutzer in der App "Profil" auswählt.

Das Problem, das ich renne, ist, dass ich nicht scheinen kann, ein gutes Beispiel zu finden (oder ein gutes Verständnis davon zu haben), wie man verursacht, dass die Anwendung die Ansicht lädt und es delegiert ist. Wenn dies unter Android wäre, würde ich die Klasse Activity ableiten und die entsprechende Schnittstellendatei laden lassen.

Bis jetzt habe ich einen View-Controller:

@implementation customizeViewController 
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
     if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 
      // Custom initialization 
     } 
     return self; 
    } 
    - (void)dealloc { 
     [super dealloc]; 
    } 
@end 

Und innerhalb der Anwendung delegieren Header habe ich diese Einrichtung zum Halten mein 'Profil' Ansicht:

UIView *CustomizeWindow; 

Innerhalb didFinishLaunchingWithOptions Ich habe folgende :

CustomizeWindow = [[customizeViewController alloc] initWithNibName:@"CustomizeWindow" bundle:[NSBundle mainBundle]]; 
[window makeKeyAndVisible]; 

... wo CustomizeWindow das Filenam ist e der Datei der Profilansicht.

Ich habe ein paar verschiedene Möglichkeiten versucht, dies anzuzeigen, wie das Hinzufügen als Unteransicht zum Fenster und presentModalViewController ohne Erfolg. Ich vermute, dass es ein Stück zu diesem Puzzle gibt, das ich vermisse, also würde jede Hilfe geschätzt werden.

Antwort

1

Von allem, was ich lesen konnte, gibt es keine Möglichkeit, dies wirklich zu tun. Die Lösung bestand darin, alles zu verwerfen und es einfacher zu machen. In diesem Fall verwendet ein benutzerdefinierter Ansichtscontroller mithilfe von UIScrollView die anderen Ansichten und lädt dann die anderen XIB-Dateien programmgesteuert.

soemthing wie:
NSArray *pages = [[NSBundle mainBundle] loadNibNamed:@"CustomizePage1" owner:self options:nil];
UIView *page1 = [pages objectAtIndex:0];
[page1 setBounds:CGRectMake(0, -20, page1.frame.size.width, page1.frame.size.height)];
[self.scroller addSubview:page1];

Und tun die oben für jeden xib Sie in die Scroll-Ansicht laden möchten.

Verwandte Themen