2009-05-25 17 views
0

Ich möchte eine Ansicht anzeigen lassen, wenn der Benutzer auf eine Schaltfläche klickt. Die Hierarchie Ich habe sieht wie folgt aus:Hinzufügen einer Unteransicht in die Ansichtshierarchie

Mainwindow

-UIView 
--ScrollView 
---ScrollView.pages = UIViews 
----UIView (from above assignment) 
----TextView 
----InfoButton 

Seiten ist ein NSMutableArry von Pagecontroller-Objekte. Diese Haken an einer Feder. Diese Nibs sind die Seiten, die der Benutzer in der Bildlaufansicht durchblättert.

Der Infobutton klicken wird wie folgt verdrahtet:

- (IBAction) infoButton_click:(id)sender{ 
topView topViewViewController *topView = [[topViewViewController alloc] initWithNibName:@"TopView" bundle:[NSBundle mainBundle]]; 
//[self.navigationController pushViewController: topViewView animated:YES]; 
//[self.view addSubview: topViewView.view]; 
[super.view addSubview: topViewView.view]; 
[topViewView release]; 
} 

Infobutton ist auf einer der Seiten in der Scroll. Ich habe einen anderen Code auskommentiert, der ausprobiert wurde. Nichts davon fügt die Ansicht hinzu. Nichts passiert. Gibt es eine Möglichkeit, TopView als Top-View in der Hierarchie zu erhalten?

Antwort

2

Möchten Sie die Ansicht als Unteransicht hinzufügen oder mit dem Navigationscontroller in einer neuen Ansicht verschieben? Ich werde letzteres für den Moment annehmen.

- (IBAction)infoButton_click:(id)sender 
{ 
    TopViewController *topViewController = [[TopViewController alloc] initWithNibName:@"TopView" bundle:nil]; 
    [self.navigationController pushViewController:topViewController animated:YES]; 
    [topViewController release]; 
} 

Das ist richtig, wenn Sie tatsächlich eine Navigation haben. Stellen Sie sicher, dass Sie es tatsächlich tun. Wenn in Cocoa "nichts passiert", heißt das normalerweise, dass etwas nichts ist. Sie sollten den Debugger einchecken oder mit NSLog() überprüfen, ob einer dieser Werte gleich Null ist. Es ist möglich (sogar wahrscheinlich), dass Ihr Elternteil einen navigationController hat, aber Sie nicht.

Klassen sollten immer eine führende Hauptstadt haben. Erstellen Sie keine Variable namens "view" der Klasse "UIViewController". Dies ist ein sicherer Weg zum Leiden. Objective-C ist eine dynamische Sprache mit eingeschränkten Compiler-Überprüfungen von Typen. Die richtige Benennung von Objekten ist für eine effektive Programmierung in ObjC von entscheidender Bedeutung.

+0

Dies ist auf dem iPhone (Cocoa Touch). Es ist kein Navigationscontroller. Es ist eine Ansicht basierte App. Ich habe versucht, den Code, den Sie zeigen, wie in meinem OP erwähnt, aber es funktioniert nicht. – 4thSpace

+0

Was ist Ihr eigentliches Ziel? Wie soll "TopView" aussehen? Sollte es Teil der bestehenden scrollview (und wenn ja, wo?), Sollte es von unten gleiten oder möchten Sie nach rechts schieben, um es zu sehen? Es ist nicht klar, was ScrollView.pages in Ihrem Diagramm ist. Ist "Super" das "Seiten" oder ist es das eigentliche UIScrollView? –

+0

Ich möchte die Info-Taste drücken und eine andere Ansicht erscheinen lassen. Wäre schön wenn es wie in den Star Trek Apps als Flip erscheinen könnte. Aber das Einschieben ist in Ordnung. Sobald diese Ansicht erscheint, sollte der Benutzer nicht mehr in der Lage sein, zu gleiten/zu wischen. Es ist eine Einstellungen/Info-Ansicht. Also denke ich, dass es wahrscheinlich nicht mehr Teil von UIScrollView ist. Der Benutzer wird dann auf Fertig klicken und zurück zur Bildlaufansicht gehen. Ich habe das OP bearbeitet, um zu beschreiben, welche Seiten es sind. Nicht sicher in der "super" -Frage. Vielleicht helfen diese Klarstellungen. Lass es mich wissen, bitte. Vielen Dank. – 4thSpace

1

Basierend auf Ihrem Kommentar zu einer vorherigen Antwort möchten Sie eine modale Ansicht präsentieren. Dazu erstellen Sie eine neue Sicht "modalView" und rufen [topView presentModalViewController:modalView animated:YES] auf.

In einer zukünftigen Version des iPhone OS, die ich natürlich nicht kommentieren könnte, wenn es unter NDA wäre, könnten Sie einen modalen View-Controller mit einem Flip-Übergang präsentieren, indem Sie eine Eigenschaft auf der Ansicht setzen Controller vorgestellt werden, der wahrscheinlich modalTransitionStyle oder somesuch heißen würde.

Verwandte Themen