2014-02-17 114 views
1

我試圖從UITableView顯示一個視圖控制器的頂部。當用戶點擊其中一個按鈕時,我想要一個視圖控制器出現在用戶按下按鈕時的視圖控制器上。因此,假設用戶處於Feed視圖中,當他們點擊該按鈕時,視圖控制器將以模糊的方式滑過Feed視圖控制器。所以基本上,舊視圖控制器將作爲新視圖控制器的模糊背景。我正在努力實現像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; 
} 

這是我想實現:

enter image description here

+0

入住這https://github.com/cezarywojcik/CWPopup – Guilherme

+0

你不應該在iOS中添加子視圖控制器,只是做[vc.view addSubview:vc2.view] – user2277872

+0

沒有,@ user2277872添加子視圖控制器是最好的做法。 https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html –

回答

0

的的viewController傳入此方法是,最終被視圖控制器選擇。如果這返回「否」,那麼該視圖控制器永遠不會被選擇。

例如,你有一個標籤欄控制器2級的標籤和「標籤1」是默認選擇。如果用戶點擊「標籤2」,則將調用以下功能,並且「viewController」將是屬於「標籤2」的視圖控制器。如果此功能返回YES,則附加到「選項卡2」的視圖控制器將顯示在前面。如果函數返回「NO」,則不會發生任何事情。含義與「標籤2」關聯的視圖控制器不顯示。

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

您的代碼嘗試將子視圖控制器添加到不會顯示的視圖控制器。由於該方法返回「否」,「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]; 
相關問題