文档章节

iOS 导航条上添加UISegmentedControl,点击分类按钮,显示不同的ViewController

壹峰
 壹峰
发布于 02/12 11:34
字数 449
阅读 7
收藏 0
iOS

https://blog.csdn.net/ycf03211230/article/details/54095838


#import "NextViewController.h"
#import "OneViewController.h"
#import "TwoViewController.h"
#import "ThreeViewController.h"

#define COLOR(r, g, b, a) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:a]

@interface NextViewController (){
    NSMutableDictionary *listDic;
}

@property(nonatomic, strong) OneViewController *oneVC;
@property(nonatomic, strong) TwoViewController *twoVC;
@property(nonatomic, strong) ThreeViewController *threeVC;

@property (nonatomic ,strong) UIViewController *currentVC;

@end

@implementation NextViewController

-(OneViewController *)oneVC{
    if (_oneVC == nil) {
        _oneVC = [[OneViewController alloc] init];
    }
    return _oneVC;
}


-(TwoViewController *)twoVC{
    if (_twoVC == nil) {
        _twoVC = [[TwoViewController alloc] init];
    }
    return _twoVC;
}


-(ThreeViewController *)threeVC{
    if (_threeVC == nil) {
        _threeVC = [[ThreeViewController alloc] init];
    }
    return _threeVC;
}

- (void)viewDidLoad {
    [super viewDidLoad];

    listDic = [NSMutableDictionary dictionary];

    NSArray * _titles = @[@"申请", @"待办",@"测试"];
    UISegmentedControl * _segmentedControl = [[UISegmentedControl alloc] initWithItems:_titles];
    _segmentedControl.selectedSegmentIndex = 0;
    _segmentedControl.tintColor = COLOR(183, 222, 232, 1.0);

    //修改字体的默认颜色与选中颜色
    //选择后的字体颜色(在NSDictionary中 可以添加背景颜色和字体的背景颜色)
    NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor blackColor],
                         NSForegroundColorAttributeName,
                         [UIFont systemFontOfSize:12],
                         NSFontAttributeName,nil];

    [ _segmentedControl setTitleTextAttributes:dic forState:UIControlStateSelected];

    //默认字体颜色
    NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:COLOR(183, 222, 232, 1.0),
                          NSForegroundColorAttributeName,
                          [UIFont systemFontOfSize:12],
                          NSFontAttributeName,nil];

    [ _segmentedControl setTitleTextAttributes:dic1 forState:UIControlStateNormal];

    [_segmentedControl addTarget:self action:@selector(segmentValueChanged:) forControlEvents:UIControlEventValueChanged];

    _segmentedControl.frame = CGRectMake(0.0, 0.0, 200.0, 29.0);
    self.navigationItem.titleView = _segmentedControl;

    //将默认的页面添加进去
    [self addChildViewController:self.oneVC];

    [self.view addSubview:self.oneVC.view];
    //设置当前显示的VC是哪个
    self.currentVC = _oneVC;


}

//按钮点击事件
-(void)segmentValueChanged:(UISegmentedControl *)seg{
    NSLog(@"seg.tag-->%ld",seg.selectedSegmentIndex);
    switch (seg.selectedSegmentIndex) {
        case 0:
            [self replaceController:self.currentVC newController:self.oneVC];
            break;
        case 1:
            [self replaceController:self.currentVC newController:self.twoVC];
            break;
        case 2:
            [self replaceController:self.currentVC newController:self.threeVC];
            break;

        default:
            break;
    }

    //NSArray *sub = self.childViewControllers;
    //NSLog(@"sub-->%@",sub);
}


//  切换各个标签内容
- (void)replaceController:(UIViewController *)oldController newController:(UIViewController *)newController
{
    /**
     *            着重介绍一下它
     *  transitionFromViewController:toViewController:duration:options:animations:completion:
     *  fromViewController      当前显示在父视图控制器中的子视图控制器
     *  toViewController        将要显示的姿势图控制器
     *  duration                动画时间
     *  options                 动画效果
     *  animations              转换过程中得动画
     *  completion              转换完成
     */
    if ([newController isEqual:self.currentVC]) {
        return;
    }

    [self addChildViewController:newController];
    [self transitionFromViewController:oldController toViewController:newController duration:0.0 options:UIViewAnimationOptionTransitionNone animations:nil completion:^(BOOL finished) {

        if (finished) {

            [self.view addSubview:newController.view];
            self.currentVC = newController;

        }else{

            self.currentVC = oldController;

        }
    }];
}

 

本文转载自:https://blog.csdn.net/ycf03211230/article/details/54095838

共有 人打赏支持
壹峰
粉丝 8
博文 584
码字总数 9582
作品 0
广州
其他
私信 提问
iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem

1、UINavigationController导航控制器如何使用 UINavigationController可以翻译为导航控制器,在iOS里经常用到。 我们看看它的如何使用: 下面的图显示了导航控制器的流程。最左侧是根视图,...

知行合一100
2012/06/21
0
0
论坛源码推荐(4月28日):列表项目的波浪效果 兼容iOS 6与iOS 7的自定义导航条

Flow 基于手势的教程框架,以用户熟悉的手势来驱动用户界面。灵感来自于Facebook Paper。 测试环境:Xcode 5.0,iOS 4.3以上 AMWaveTransition 带有表格的视图控制器切换效果,点击每个栏目会...

mingxun
2014/04/29
0
0
定制iOS 7中的导航栏和状态栏

由于种种原因,申请了一个开源中国的帐号,也许会由于我的不耐心,不会亲自去一步步的写博文,但准备把自己看到的好的,都转载过来,就当时资源的存储,也算是一种推广吧。 iOS 7 教程:定制...

谁家的阿毛
2013/11/21
0
0
IOS代码实现常用控件UIButton、UISlider、UISwitch、UISegmentedControl

IOS中最常用到的控件UIButton、UISlider、UISwitch、UISegmentedControl通过Xib文件拖动生成非常简单,其实用代码实现也是一样的简单,当然,用代码实现能够掌握到更多的东西。 上图中包涵提...

长平狐
2012/10/25
606
0
开源中国 iOS 代码库已经超过 1000 款控件

开源中国的 iOS 代码库日前已经超过 1000 款控件,共 29 个不同分类,如下图所示: 这些控件都带有截图,欢迎选用 可点击下面链接进入 iOS 代码库,或者点击首页导航条第二行的 iOS 代码库 ...

oschina
2012/08/23
7.2K
19

没有更多内容

加载失败,请刷新页面

加载更多

java常用设计模式

设计模式; 一个程序员对设计模式的理解: “不懂”为什么要把很简单的东西搞得那么复杂。后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“...

呵呵哒灬
20分钟前
3
0
Kafka入门

1、Kafka使用背景 在我们大量使用分布式数据库、分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我想对用户的搜索关键词...

watermelon11
昨天
0
0
Cannot list resources Permission denied: user=Administrator, access=READ_EXECUTE, inode="/tmp"

Cannot list resources Permission denied: user=ÁõÎĺÁ, access=READ_EXECUTE, inode="/tmp":root:supergroup:drwx-wx-wx windows系统 Spring boot 整合hadoop时报错。 java.lang.Ille......

lwenhao
昨天
2
0
【结构型】- 享元模式

享元模式 作用:利用共享技术有效地支持大量细粒度对象的复用 享元模式状态 内部状态:在享元对象内部不随外界环境改变而改变的共享部分,存储于享元对象内部 外部状态:随着环境的改变而改变...

ZeroneLove
昨天
3
0
Vue 中使用UEditor富文本编辑器-亲测可用-vue-ueditor-wrap

一、Vue中在使用Vue CLI开发中默认没法使用UEditor 其中UEditor中也存在不少错误,再引用过程中。 但是UEditor相对还是比较好用的一个富文本编辑器。 vue-ueditor-wrap说明 Vue + UEditor + ...

tianma3798
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部