Frage

Ich möchte eine Feder laden, die nicht eine Ansicht in einer UITabViewController ist. Hier ist, was ich jetzt und es funktioniert nicht, aber es sollte Ihnen eine Vorstellung davon, was ich will:

- (IBAction)PlaylistButtonPressed:(id)sender
{
    MusicPick *music = [[MusicPick alloc] initWithNibName:@"MusicPick" bundle:nil];

    [self.view addSubview:music.view];

    [music release];    
}

Wenn Sie eine Taste in der Ansicht drücken, ist die Idee, eine andere Feder zu laden, MusicPick, die als ein Subview laden wird, etwas holen und kommen gleich wieder hier. Jede Hilfe ist willkommen, oder neue Ideen.

War es hilfreich?

Lösung

Um ein wenig mehr Details hinzuzufügen.

Sie können mit addSubView oder durch Drücken einer Steuerung auf der UITabBarController Sicht im Hinblick auf eine bestehende UIViewController Sicht hinzufügen. Im letzteren Fall muss der UITabBarController sein [gewesen] ein UINavigationController mit einem RootViewController.

Ich vermute, das ist, was Sie meinen. Daher würden Sie so etwas wie die folgenden Aktionen aus.

- (IBAction)PlaylistButtonPressed:(id)sender
{
    // Load UIViewController from nib
    MusicPick *music = [[MusicPick alloc] initWithNibName:@"MusicPick" bundle:nil];

    // Add to UINavigationController's stack, i.e. the view for this UITabBarController view
    [self.navController pushViewController:music animated:YES];

    // Release music, no longer needed since it is retained by the navController
    [music release];   
}

Dies vorausgesetzt, dass Sie eine UINavigationController als Ansicht in Ihrem UITabBarController haben und es heißt NavController.

Wenn Sie nur eine UIView auf die UIViewController Ansicht in der UITabBarController (z Overlay) hinzufügen möchten, dann können Sie nur addSubView verwenden, wie Sie bereits herausgefunden, kein UINavigation-Controller erforderlich.

Andere Tipps

Sie können keine subview direkt zu einem UITabBarController hinzuzufügen. Die Art und Weise einer dieses Controller funktioniert, ist durch eine Liste von UIViewControllers Speicherung und jede davon in einem Tab angezeigt wird. Aber sie sind nicht wirklich Subviews an sich. Sie ändern nicht wirklich die Tab-Leiste Controller selbst jemals außer diese Liste zu aktualisieren.

Da das, was Sie scheinen vorhanden tun zu wollen, ist eine temporäre Ansicht, damit der Benutzer einige Optionen wählen, die etwas in der Tab-Leiste Controller auswirken werden, ich würde vorschlagen, Sie präsentieren diese Ansicht aus Ihrer Feder als modale Ansicht < em> über die Registerkarte Ansichten. Werfen Sie einen Blick auf UIViewController der presentModalViewController:animated: und dismissModalViewControllerAnimated: Methoden. Unter der Annahme, MusicPick ist eine Unterklasse von UIViewController, geben sie nur an diese Methode, nachdem er zugeordnet wurde (wie Sie es in Ihrem ersten Codezeile oben tat), und UIKit wird der Rest kümmern. Beachten Sie, dass MusicPick Instanz freizugeben, wenn Sie die ausgewählten Werte oder vom Benutzer eingegebenen Daten von ihm fertig sind ziehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top