首页 > 代码库 > iOS_21团购_顶部菜单和弹出菜单联动

iOS_21团购_顶部菜单和弹出菜单联动

最终效果图:






各控件关系图1:

\


各控件关系图2:



点击Dock上面的按钮DockItem,

创建经导航控制器包装的DealListController,

并且添加到主控制器的右侧空间

//
//  DealListController.m
//  帅哥_团购
//
//  Created by beyond on 14-8-14.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//  点击dock上面的【团购】按钮对应的控制器,上面是导航栏,导航栏右边是searchBar,导航栏左边是一个大按钮(TopMenu)(内部由三个小按钮组成<TopMenuItem>)

#import "DealListController.h"
// 导航栏左边是一个大按钮(顶部菜单)
#import "TopMenu.h"

@interface DealListController ()

@end

@implementation DealListController


- (void)viewDidLoad
{
    [super viewDidLoad];
    // 1,设置上方的导航栏,右边是搜索bar,左边是一个大的VIEW(内有三个按钮),即TopMenu,内部的按钮是TopMenuItem
    [self addNaviBarBtn];
    
}
// 1,设置上方的导航栏,右边是搜索bar,左边是一个大的VIEW(内有三个按钮),<span style="font-family: Arial, Helvetica, sans-serif;">即TopMenu,内部的按钮是TopMenuItem</span>
- (void)addNaviBarBtn
{

    
    // 1.右边的搜索框
    UISearchBar *s = [[UISearchBar alloc] init];
    s.frame = CGRectMake(0, 0, 210, 35);
    s.placeholder = @"请输入商品名、地址等";
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:s];
    
    // 2.左边的菜单栏,导航栏左边是一个大按钮(顶部菜单)
    TopMenu *topMenu = [[TopMenu alloc] init];
    // 3.用于点击顶部按钮时,容纳创建出来的底部弹出菜单(包括一个contentView和cover,contentView又包括scrollView和subTitleImgView),本成员是由创建此TopMenu的外部赋值传入, 这里是控制器的view,就是导航栏下面的所有区域
    // 重要~~~~~~~~~~
    topMenu.controllerView = self.view;

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:topMenu];
}
@end

TopMenu

//
//  TopMenu.h
//  帅哥_团购
//
//  Created by beyond on 14-8-15.
//  Copyright (c) 2014年 com.beyond. All rights reserved.
//  点击dock上面的【团购】按钮时,创建出对应的经导航包装后的子控制器,子控制器的上面是导航栏,导航栏右边是searchBar,导航栏左边是一个大按钮(TopMenu)(内部只由三个小按钮组成<TopMenuItem>它们分别是:全部频道,全部商区,默认排序),点击TopMenu中的某一个按钮<TopMenuItem>,会在其下方,弹出一个PopMenu,PopMenu包括二个部分(上面是一个contentView:包括:scrollView和subTitleImgView,下:蒙板)

#import <UIKit/UIKit.h>

@interface TopMenu : UIView


//  用于点击顶部菜单项时,容纳创建出来的底部弹出菜单(包括一个contentView和cover,contentView又包括scrollView和subTitleImgView),本成员是由创建此TopMenu的控制器赋值传入, 本成员属性是用来接收控制器的view,就是导航栏下面的所有区域,目的是用于添加并展示PopMenu
@property (nonatomic, weak) UIView *controllerView;
@end



to be continue...