簡體   English   中英

呈現具有透明背景的模態視圖控制器

[英]Present a modal view controller with transparent background

我想以編程方式呈現一個UIViewController ,它應該以透明背景顯示(或不顯示)。 我希望它適用於iOS 7.0及更高版本。 我發現自己有很多問題(和答案),但他們無法幫助我。 這是我的應用程序的視圖層次結構。

我正在使用側面菜單控制器(RESideMenu)。

我有一個rootView(來自RESideMenu) - >在UINavigationController顯示一個中心控制器(以及一個左視圖控制器)。

在要求中,我想呈現一個視圖控制器

從推動的視圖控制器(在導航層次結構中)

從呈現的視圖控制器(在導航層次結構中)

另外,我需要呈現它並執行一些操作,然后將其刪除。

我很確定這應該適用於許多情況,有(或沒有)側面菜單,甚至導航控制器。

我在這個隊列中發布了一個單獨的問題(當然也是它的答案),因為我認為這對那些可能因缺乏可接受的解決方案而感到沮喪的社區開發者有用。

假設,我們在FirstViewController

//Obj-C
- (void) presentSecondVC {
    SecondViewController *vc = [[SecondViewController alloc] init];
    [self addChildViewController:vc];
    [self didMoveToParentViewController:vc];
}

//Swift
func presentSecondVC() {
    let vc = SecondViewController.init()
    self.addChildViewController(vc)
    self.didMove(toParentViewController: vc)
}

有些人可能需要像這樣寫上面的方法,

//Obj-C
- (void) presentSecondVC {
    SecondViewController *vc = [[SecondViewController alloc] init];
    vc.view.frame = CGRectMake(0,0,width,height); //Your own CGRect
    [self.view addSubview:vc.view]; //If you don't want to show inside a specific view
    [self addChildViewController:vc];
    [self didMoveToParentViewController:vc];
    //for someone, may need to do this.
    //[self.navigationController addChildViewController:vc];
    //[self.navigationController didMoveToParentViewController:vc];   
}

//Swift
func presentSecondVC() {
    let vc = SecondViewController.init()
    vc.view.frame = CGRect.init(x: 0, y: 0, width: width, height: height) //Your own CGRect
    self.view.addSubview(vc.view) //If you don't want to show inside a specific view.
    self.addChildViewController(vc)
    self.didMove(toParentViewController: vc)
    //for someone, may need to do this.
    //self.navigationController?.addChildViewController(vc)
    //self.navigationController?.didMove(toParentViewController: vc)
}

現在在SecondViewController想要返回

//Obj-C
- (void) goBack {
    [self removeFromParentViewController];
}

//Swift
func goBack() {
    self.removeFromParentViewController()
}

玩得好(每個場景):)

是的,這不會顯示動畫,在我的情況下,我在vc顯示自定義彈出窗口雖然看起來很好用這段代碼!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM