2015-03-08 4 views
8

Ich habe den folgenden Code, die meine Viewcontroller präsentieren statt eines bestehenden:Präsens Viewcontroller auf andere programmatisch

let frameworkBundle = NSBundle(identifier: "me.app.MyFramework") 
var storyBoard:UIStoryboard = UIStoryboard(name: "MyStoryboard", bundle: frameworkBundle) 

var vc = storyBoard.instantiateInitialViewController() as MyPresenterViewController 

viewControllerToPresentIn.presentViewController(vc, animated: true, completion: nil) 

Aber ich die Viewcontroller auf des anderen präsentieren möchten programmatisch ,

irgendwelche Ideen?

+0

Dieser Code scheint tatsächlich einen View-Controller übereinander zu präsentieren. Was meinst du damit, wenn du "oben" sagst und wie unterscheidet es sich von "stattdessen"? –

+0

@nkukushkin Mein View-Controller enthält nur eine Schaltfläche und das ist, was ich sehe, ich kann den Artikel nicht sehen, der darunter –

+0

, wenn Sie ein neues Fenster auf z. Alert-Level und fügen Sie Ihren Controller dazu, und wenn Sie diese Taste, dann wird es über alles auf dem Bildschirm, einschließlich der aktuellen Tastatur als auch. – holex

Antwort

22

Wenn Sie wollen, dass Ihr Modal-View-Controller zu sehen ist, obwohl Sie seine Ansicht einen clear color Hintergrund geben müssen. Und stellen Sie modalPresentationStyle auf .OverCurrentContext.

let vc = storyBoard.instantiateInitialViewController() as! MyPresenterViewController 
vc.view.backgroundColor = .clearColor() 
vc.modalPresentationStyle = .OverCurrentContext 

viewControllerToPresentIn.presentViewController(vc, animated: true, completion: nil) 
+0

Ich muss auch anfassbar sein, was bedeutet, dass ich auf den View Controller hinterher drücken kann, ist das möglich? –

+0

Es ist möglich, überprüfen Sie diese Antwort: http://StackOverflow.com/A/7719901/1607485 –

+0

Ich habe nicht verstanden, wie ich Hittest überschreiben kann, es ist eine Methode meiner UIVIEW Bedeutung von self.view. Wie kann ich es überschreiben? –

0

Wenn Ihr mit Navigation Sie Viewcontrollers als

navigationController?.presentViewController(newVC, animated: true, completion: nil) 

aber da präsentiert bringt nicht die Ansicht von links oder rechts ändern werden Sie verlieren Ihre Navigation

3

habe ich die folgende nähern, um meine Ansicht nur auf der Unterseite der anderen Ansicht Controller zu präsentieren:

var presenterStoryBoard:UIStoryboard = UIStoryboard(name: "MiniAppPanel", bundle: frameworkBundle) 

var vc = presenterStoryBoard.instantiateInitialViewController() as MiniAppPanelViewController 

vc.view.frame = CGRectMake(0, vc.view.frame.size.height - 120, vc.view.frame.size.width, 120) 

publisherViewController.addChildViewController(vc)  
publisherViewController.view.addSubview(vc.view) 
Verwandte Themen