IOS学习笔记(5)UINavigationController UITabBarController

UINavigationController实现导航

在App委托中的.h文件里

@property( nonatomic ,strong)UINavigationController *nav;

.m文件里

@synthesize nav;

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

     self.nav = [ [UINavigationController alloc]initWithRootViewController:self.rootViewController];

    [self.window addSubview:  self.nav.view ];

    return YES;

}

在viewController页面里面

-(void)viewDidLoad{

   self.title = @"hello World";

}

更深一点的:

想在第一个视图控制器出现在屏幕上5秒后把第二个视图控制器拖到它的顶部:

首先在第一个视图控制器放入第二个视图控制器:

#import "SecondViewController"

-(void)pushSecondController{

    SecondViewController *secondController = [ [ SecondViewController alloc]initWithNibName:nil bundle:NULL];

    [ self.navigationController pushViewController:secondController animated:YES];

}

-(void)viewDidAppear:(BOOL)paramAnimated{

    [super viewDidAppear:paramAnimated];

    [self performSelector:@selecter(pushSecondController) withObject:nil afterDelay:5.0f];    

}

既然能够拖进来,那么就能移出去:

-(void)goBack{

    [ self.navigationController  popViewControllerAnimated:YES];

}

-(void)DidAppear:(BOOL)paramAnimated{

    [super viewDidAppear:paramAnimated];

    [self performSelector:@selector(goBack) withObject:nil afterDelay:5.0f];

}

调整视图控制器中导航控制器的序列

使用 UINavigationController 类的viewControllers属性获得并修改与导航控制器关联的视图控制器的排列顺:


-(void)goBack{

    NSArray *currentControllers =  self.navigationController.viewControllers;

    NSMutableArray *newControllers = [NSMutableArray arrayWithArray:currentControllers];

    [newControllers removeLastObject];

     self.navigationController.viewControllers = newControllers;

    //动画完成

    //[self.navigationControllersetViewControllers:newControllers animated:YES];

}

为了从当前视图控制器相关联的导航控制器的层次结构中推送最后一个视图控制器,可以在任何视图控制器内调用此方法。

在导航栏展示一张图片

要在导航控制器的当前视图中的标题中用一张图片代替文本

-(void)viewDidLoad{

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor whiteColor];

    UIImageView *imageView = [ [UIImageView alloc] initWithFrame:CGRectMake(0.0f,0.0f,100.0f,40.0f);

    imageView.contentMode = UIViewContentModeScaleAspectFit;

    UIImage *image = [UIImage imageNamed:@"FullSizeLogo.png"];

    [imageView setImage:image];

    self.navigationItem.titleView = imageView;

}

以上部分demo下载

使用UIBarButtonItem类在导航栏里面添加按钮

创建一个导航按钮前提:创建一个UIBarButtonItem类实例,使用视图空间的NavigationItem属性给导航栏添加按钮。NavigationItem属性允许我们设置这个导航栏。这个属性自身有两个属性,分别为rightBarButtonItem 和 leftBarButtonItem 。这两个属性都属于UIBarButtonItem类。

-(void)viewDidLoad{

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor whiteColor];

    self.title = @"hello World";

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"right" style:UIBarButtonItemStylePlain target:self action:@selector(performRight:)];

}

-(void) performRight:(id)right{

    NSLog(@"clicked rightButton");

}

系统按钮初始化方法一:

initWithBarButtonSystemItem:target:action:初始化方法

self.navigationItem.leftBarButtonItem = [ [UIBarButtonItem alloc] initWithBartButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(performRight:)];

导航按钮的初始化按钮:

typedef enum{

    UIBarButtonSystemItem Done/Cancel/Edit/Save/Add/FlexibleSpace/FixedSpace/Compose/Reply/Action/Organize/Bookmarks/Search/Refresh/Stop/Camera/Trash/Play/Pause/Rewind/FastForward/Undo/Redo/PageCurl/

}UIBarButtonSystemItem;


系统按钮初始化方法二:

initWithCustomView:方法(可以将UISwitch添加)

-(void)viewDidLoad{

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor whiteColor];

    self.title = @"hello World";

    UISwitch *mySwitch = [ [UISwitch alloc]init];

    mySwitch.on = YES;

    [mySwitch addTarget:self action:@selector(SwitchChanged:) forControlEvents:UIControlEventValueChanged];

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:mySwitch];

}

可以了,测试一下吧。

那么再做一个上下箭头的demo吧。

-(void)viewDidLoad{

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor whiteColor];

    self.title = @"hello World";

    NSArray *items = [[NSArray alloc]initWithObjects:[UIImage imageNamed:@"UpArrow.png"],[UIImage imageNamed:@"DownArrow.png"],nil];

    UISegmentedControl *segmentedControl = [ [UISegmentedControl alloc]initWithItems:items];

    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;

    segmentedControl.momentary = YES;

    [segmentedControl addTarget:self action:@selector(segmentedControlTapped:) forControlEvents:UIControlEventValueChanged];

    self.navigationItem.rightBarButtonItem = [ [UIBarButtonItem alloc]initWithCustomView:segmentedControl];

    //设置动画

    //UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];

    [self.navigationItem setRightBarButtonItem:rightBarButton animated:YES];

}

使用UITabBarController显示多视图控制器

AppDelegate.h里面

@class FirstViewController;

@class SecondViewController;


@property( nonatomic,strong)FirstViewController *firstViewController;

@property(non atomic,strong)SecondViewController *secondViewController;

@property(non atomic,strong)UITableBarController *tabBarController;

AppDelegate.m文件里

@synthesize firstViewController,secondViewController,tabBarController;


self.firstViewController = [[FirstViewController alloc]initWithNibName:nil bundle:NULL];

self.secondViewController = [[SecondViewController alloc]initWithNibName:nil bundle:NULL];

NSArray *twoViewControllers = [ [NSArray alloc]initWithObjects:self.firstViewController,self.secondViewController,nil];

self.tabBarController = [[UITabBarController alloc]init];

[self.tabBarController setViewControllers:twoViewControllers];


运行程序一看,没有导航啊。怎么办呢?接着往下进行吧。

在AppDelegate.h中

@proterty(non atomic,strong)UINavigationController *nav;

在AppDelegate.m文件里

@synthesize nav;

self.firstNavigationController = [[UINavigationController alloc]initWithRootViewController:self.firstViewController];

self.secondNavigationController = [[UINavigationController alloc]initWithRootViewController:self.secondViewController];

NSArray *twoNavigationController = [[NSArray alloc]initWithObjects:self.firstNavigationController,self.secondNavigationController,nil];

self.tabBarController = [[UITabBarController alloc]init];

[self.tabBarController setViewControllers:twoNavigationController];

self.window addSubview:self.tabBarController.view];

tabbarItem属性:

firstViewController.m

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if(self!=nil){

        self.title = @"First";

        self.tabBarItem.image = [UIImage image named:@"FirstTb.png"];

    }

    return self;

}

secondViewController 同上



下面部分demo 下载
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值