2014-02-17 165 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]; 
相关问题