簡體   English   中英

無法將一個視圖控制器顯示在另一個視圖控制器上

[英]Can't show one view controller on top of another

我試圖顯示一個視圖控制器從UITableView的另一個。 當用戶單擊按鈕之一時,我希望視圖控制器出現在用戶按下按鈕時所在的視圖控制器上方。 可以這樣說,用戶處於提要視圖中,當他們單擊按鈕時,視圖控制器將在提要視圖控制器上滑動並帶有模糊效果。 因此,基本上,舊的視圖控制器將充當新視圖控制器的模糊背景。 我正在嘗試實現類似tumblr的功能。

這是我在AppDelegate中的代碼:

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
    if ([viewController.title isEqualToString:@"Create"]) {


        CreateOptionViewController *createOptionViewController = [[CreateOptionViewController alloc] init];
        [viewController addChildViewController: createOptionViewController];
        createOptionViewController.view.frame = viewController.view.bounds;
        [viewController.view addSubview: createOptionViewController.view];
        [viewController.view bringSubviewToFront:createOptionViewController.view];
        [createOptionViewController didMoveToParentViewController: viewController];

        return NO;

    }

    return YES;
}

這是我要實現的目標:

在此處輸入圖片說明

傳遞給此方法的viewController是最終被選擇的視圖控制器。 如果返回“ NO”,則該視圖控制器將永遠不會被選中。

例如,您有一個帶有2個標簽的標簽欄控制器,並且默認情況下選擇了“標簽1”。 如果用戶點擊“選項卡2”,則下面的函數將被調用,“ viewController”將是屬於“選項卡2”的視圖控制器。 如果此函數返回“是”,則將附加到“選項卡2”的視圖控制器置於最前面。 如果函數返回“ NO”,則什么也不會發生。 表示未顯示與“選項卡2”關聯的視圖控制器。

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController

您的代碼嘗試將子視圖控制器添加到將不會顯示的視圖控制器。 由於該方法返回“ NO”,因此“ viewController”不是最重要的。

 [viewController addChildViewController: createOptionViewController];

您需要將“ createOptionViewController”作為childViewController添加到當前正在顯示的視圖控制器中。 在這種情況下,您可能希望將其添加為

tabBarController.selectedViewController

    CreateOptionViewController *createOptionViewController = [[CreateOptionViewController alloc] init];
    UIViewController *selectedVC = tabBarController.selectedViewController;

     [selectedVC addChildViewController: createOptionViewController];
     createOptionViewController.view.frame = viewController.view.bounds;
     [selectedVC.view addSubview: createOptionViewController.view];
     [selectedVC.view bringSubviewToFront:createOptionViewController.view];
     [createOptionViewController didMoveToParentViewController: viewController];

暫無
暫無

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

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