2016-05-04 5 views
1

Was ich versuche in Papier zu tun klingt einfach, aber ich habe wirklich Mühe, es zu tunBlick auf eine Navigation Controller aus dem Inneren einer Scroll-Ansicht (subview)

So bin ich in dieser Ansicht welches einen Navigationscontroller hat. In dieser Ansicht befindet sich eine Bildlaufansicht, in die ich eine Unteransicht dränge.

 // Setting the View inside the Scroll View // 
     viewOffers.ContentSize = new CoreGraphics.CGSize(320f, 1100f); 
     ShowOffersViewController vc = Storyboard.InstantiateViewController("ShowOffersView") as ShowOffersViewController; 
     viewOffers.AddSubview (vc.View); 

Auf der SubView, ich habe eine Schaltfläche, die ich ihn einen Blick auf die Navigation schieben will es übergeordnete Ansicht (Hauptansicht) ist.

Wie kann ich das erreichen?

Bisher habe ich versucht:

ChequesViewController test = Storyboard.InstantiateViewController("ChequesView") as ChequesViewController; 

// This  
ParentViewController.NavigationController.PushViewController(test, true); 

// and this and neither work 
NavigationController.PushViewController(test, true); 

Bild Beispiel von dem, was ich versuche zu tun: Logic

+0

Haben Sie die Ansicht möchten Sie schieben ein Subview der Navigationssteuerung sein, oder der Scroll-Ansicht? – brandonscript

+0

Ich möchte, dass es an seinen übergeordneten Navigationscontroller geht. Um ein wenig zu verdeutlichen: [Elternansicht mit Nav-Controller] -> [ScrollView mit gedrückter SubView] -> Ein-Taste drinnen drücken, Eine Ansicht zum Eltern-Nav-Controller schieben –

+0

OK Gotcha. Das Problem, das Sie haben, besteht darin, den richtigen Weg zu finden, den Navigationscontroller in der Bildlaufansicht zu referenzieren. Ich bin kein Xamarin-Typ, also bin ich mir nicht sicher, ob ich sehr hilfreich sein kann, aber wenn Sie Haltepunkte setzen, können Sie dann zumindest einen Verweis auf den ViewController der Bildansicht finden? Wenn ja, dann ist es "scrollViewsViewController.NavigationController". – brandonscript

Antwort

1

Ok schaffte ich es wie mit einem Ereignis zu tun, so:

in Elternteil Viewcontroller:

viewOffers.ContentSize = new CoreGraphics.CGSize(320f, 1100f); 
ShowOffersViewController vc = Storyboard.InstantiateViewController("ShowOffersView") as ShowOffersViewController; 
vc.ButtonPressed +=() => { 
    ChequesViewController test = Storyboard.InstantiateViewController("ChequesView") as ChequesViewController; 
    NavigationController.PushViewController(test, true); 
}; 
viewOffers.AddSubview (vc.View); 

dann in ShowOff ersViewController.cs:

public partial class ShowOffersViewController : UIViewController 
{ 
    public ShowOffersViewController (IntPtr handle) : base (handle) 
    { 
    } 

    public override void ViewDidLoad() 
    { 
     base.ViewDidLoad(); 

     button.TouchUpInside += Button_TouchUpInside; 
    } 

    public delegate void ButtonPressedHandler(); 
    public event ButtonPressedHandler ButtonPressed; 

    public void Button_TouchUpInside (object sender, EventArgs e) 
    { 
     if (ButtonPressed != null) { 
      ButtonPressed.Invoke(); 
     } 
    } 
} 

die dann wie folgt aussieht:

enter image description here

+0

Awesome Mann, ich bin sicher, es wird funktionieren! Ich werde es als erstes am Morgen versuchen. Noch einmal Danke! –

+0

Keine Sorgen lassen Sie mich wissen, wie es geht –

+0

Es funktioniert! Danke, Mann!! : D –

Verwandte Themen