如何将View控制器添加到菜单上的每个项目?

时间:2014-04-17 20:34:39

标签: drop-down-menu uiviewcontroller

我确信这很容易,但我花了好几个小时来做​​对。 我从github下载这个简单的菜单: https://github.com/Antondomashnev/ADDropDownMenuView

视图控制器如下所示:

- (void)addDropDownMenu{

ADDropDownMenuView *dropDownMenuView = [[ADDropDownMenuView alloc] initAtOrigin:CGPointMake(0, 20)
                                                        withItemsViews:@[[self dropDownItemWithTitle:NSLocalizedString(@"Item 1", @"")],
                                                                         [self dropDownItemWithTitle:NSLocalizedString(@"Item 2", @"")],
                                                                         [self dropDownItemWithTitle:NSLocalizedString(@"Item 3", @"")]]];
dropDownMenuView.delegate = self;
dropDownMenuView.separatorColor = [UIColor blackColor];
[self.view addSubview: dropDownMenuView];}

我在故事板中添加了2个视图控制器。 如何将它们与第2项和第3项连接起来? (所以每当我点击不同的项目时,我会看到不同的视图)。 任何帮助将不胜感激......

1 个答案:

答案 0 :(得分:0)

我已更改演示代码以向您显示解决方案。 在ViewController.m文件中添加具有两个属性的私有类别

@interface ViewController ()<ADDropDownMenuDelegate>

@property (nonatomic, strong) NSArray *viewControllers;
@property (nonatomic, strong) ADDropDownMenuView *dropDownMenuView;

@end

然后你需要创建set viewControllers数组。例如,我想在viewDidLoad

中创建两个ViewController2类实例(clean UIViewController模板)
ViewController2 *vc1 = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController2Blue"];
[self addChildViewController:vc1];
ViewController2 *vc2 = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController2Yellow"];
[self addChildViewController:vc2];
self.viewControllers = @[vc1, vc2];

您必须将这些视图控制器作为子视图控制器添加到self。别忘了在故事板中为视图控制器设置storyboardID。在这种情况下,第一个视图控制器具有ViewController2Blue storyboardID,第二个具有ViewController2Yellow。

最后要做的是实施ADDropDownMenuDelegate方法

- (void)ADDropDownMenu:(ADDropDownMenuView *)view didSelectItem:(ADDropDownMenuItemView *)item
{
    NSLog(@"%@ selected", item.titleLabel.text);
    for(UIViewController *viewController in self.viewControllers){
        [viewController.view removeFromSuperview];
    }
    if([item.titleLabel.text isEqualToString:NSLocalizedString(@"Item 1", @"")]){
        [self.view insertSubview:((ViewController2 *)self.viewControllers[0]).view belowSubview:self.dropDownMenuView];
    }
    else{
        [self.view insertSubview:((ViewController2 *)self.viewControllers[1]).view belowSubview:self.dropDownMenuView];
    }
}

在此方法中,您将从superview中删除所有UIViewController的视图。然后根据ADDropDownMenuItemView titleLabel文本,将viewController的视图添加到自我视图中。