2012-05-08 11 views
5

Also begann ich mit Storyboards in XCode 4.3.2 zu spielen. Ich begann mit der Master-Detail-Anwendung (Split-View-Anwendung für iPad). In der Detailansicht (DetailVC) habe ich eine Ansicht, in der ich ein Array von benutzerdefinierten Ansichten angezeigt habe.XCode Storyboard: Wie man ein Segment erstellt, wenn der Segment-Trigger nicht auf dem Storyboard ist

Die benutzerdefinierten Ansichten (genannt GridView) einen Hahn Gestenerkenner, die die Antippereignis auf jeder benutzerdefinierte Ansicht zu handhaben sollten. Durch Antippen von GridView wird ein View-Controller mit einigen Suchergebnissen angezeigt (SearchResultsVC).

Mit GridView in einer separaten Nib-Datei erstellt und die DetailVC und SearchResultsVC wohnen in Storyboard, wie kann ich einen Push segue mit Ziel SearchResultsVC erstellen? Ich habe gerade einen Übergang zwischen DetailVC und SearchResultsVC erstellt? Gibt es eine Möglichkeit, dass ich dieses Segment programmatisch innerhalb der GridView-Klasse auslösen kann, wenn die Tap-Geste erkannt wird?

Antwort

7

In dem Verfahren, in dem Sie die Hahn Verwendung Griff:

[self performSegueWithIdentifier: @ "yourSegueIdentifier" Absender: self];

In Ihrem Storyboard Steuer ziehen Sie von Ihrem DetailVC auf Ihre SearchResultVC und entscheiden, welche Art von Segue Sie möchten. Stellen Sie sicher, dass Sie Ihre Segment-ID mit der in der obigen Methode im Attributinspektor identisch benennen.

Ich werde versuchen und verbessern meine Antwort, die ich es vermasselt Ich denke:

1) In Ihrem DetailVC.h eine Instanzvariable wie diese für Ihre Gridview erstellen

IBOutlet UIView * gridView; 

auch ein erstellen Getter-Methode und ein IBAction für Ihre Kurzansicht wie diese

-(UIView *)gridView; 
-(IBAction)myGridGotPressed:(id)sender; 

2) Jetzt in Ihrem DetailVC.m Ihre Methoden implementieren wie diese

-(UIView *)gridView{ 
if(!gridView){ 
[[NSBundle mainBundle] loadNibNamed:@"GridView" owner:self options:nil]; 
} 
return gridView; 
} 

implementieren Auch Ihre IBAction wie diese

-(IBAction)myGridGotPressed:(id)sender{ 
[self performSegueWithIdentifier:@"yourSegueIdentifier" sender:self]; 
} 

3) Um diese Arbeit, die Sie benötigen, um die filesOwner Klasse Ihres Gridview DetailVC ändern und dann die Ausgänge und Aktionen wie gewohnt anschließen.

Ich hoffe, das hilft.

+1

die Rasteransicht müsste den Touch zurück an den DetailVC übergeben. UIView-Unterklassen können keine Segmente ausführen. – jrturton

+0

Ich vermute, dass DetailVC die Methode haben würde, die Berührung über IBAction oder sein eigenes Protokoll zu behandeln. –

+0

@jrturton - Wie sollte ich die Berührung zurück an DetailVC weitergeben? Verwenden von Delegaten - wie würde ich in diesem Fall einen Verweis auf DetailVC erhalten (Ansichten sollten nicht über View-Controller wissen, oder?) – vikmalhotra

Verwandte Themen