首页 > 其他分享 >视图控制器UINavigationController的介绍与基本使用

视图控制器UINavigationController的介绍与基本使用

时间:2024-06-30 23:44:07浏览次数:20  
标签:控制器 navigationController 视图 UINavigationController 导航 self

UINavigationController 是 iOS 中用于管理视图控制器层次结构的一个重要组件,通常用于实现基于堆栈的导航。它提供了一种用户界面,允许用户在视图控制器之间进行层次化的导航,例如从列表视图到详细视图。

UINavigationController 的主要功能

  1. 管理视图控制器堆栈:使用一个堆栈数据结构来管理视图控制器。堆栈的顶端是当前显示的视图控制器。
  2. 导航栏:在屏幕顶部显示一个导航栏,通常包含返回按钮(左端)、标题(中间)和其他控制项(右方)。

  1. 导航动画:提供标准的推入(push)和弹出(pop)动画,增强用户的导航体验。

如何使用 UINavigationController

初始化和基本使用

// 在AppDelegate.m中
#import "AppDelegate.h"
#import "RootViewController.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    
    RootViewController *rootVC = [[RootViewController alloc] init];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:rootVC];
    
    self.window.rootViewController = navController;
    [self.window makeKeyAndVisible];
    
    return YES;
}

@end

管理视图控制器堆栈

推入视图控制器

使用 pushViewController:animated: 方法将一个视图控制器推入导航堆栈,并显示它。

UIViewController *newVC = [[UIViewController alloc] init];
newVC.view.backgroundColor = [UIColor whiteColor];
[self.navigationController pushViewController:newVC animated:YES];

弹出视图控制器

使用 popViewControllerAnimated: 方法将当前视图控制器从堆栈中移除,并返回到前一个视图控制器。

[self.navigationController popViewControllerAnimated:YES];

自定义导航栏

设置导航栏标题

可以在视图控制器中设置导航栏的标题。

self.title = @"Home";

自定义导航栏按钮

可以在视图控制器中添加自定义的导航栏按钮。

UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Right" style:UIBarButtonItemStylePlain target:self action:@selector(rightButtonTapped)];
self.navigationItem.rightBarButtonItem = rightButton;

实现按钮的动作:

- (void)rightButtonTapped {
    NSLog(@"Right button tapped");
}

导航栏样式定制

可以通过 UINavigationBar 的属性来自定义导航栏的样式。

设置导航栏颜色

self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
self.navigationController.navigationBar.tintColor = [UIColor whiteColor]; // 设置返回按钮和其他按钮的颜色
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : [UIColor whiteColor]}; // 设置标题颜色

设置透明导航栏

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;

处理导航控制器中的返回动作

可以通过实现 UINavigationControllerDelegate 协议来处理导航控制器中的返回动作。

示例:拦截返回按钮动作

@interface MyViewController () <UINavigationControllerDelegate>
@end

@implementation MyViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationController.delegate = self;
}

// 实现代理方法
- (BOOL)navigationController:(UINavigationController *)navigationController shouldPopItem:(UINavigationItem *)item {
    // 在这里处理返回按钮的动作
    // 返回 YES 表示允许返回,返回 NO 表示阻止返回
    return YES;
}

@end

标签:控制器,navigationController,视图,UINavigationController,导航,self
From: https://www.cnblogs.com/zjq1999/p/18277174

相关文章

  • PostgreSQL的系统视图pg_statio_all_indexes
    PostgreSQL的系统视图pg_statio_all_indexes在PostgreSQL数据库中,pg_statio_all_indexes视图提供了有关所有索引的I/O活动的统计信息。这些统计信息对于了解索引的使用情况和性能调优非常有帮助。pg_statio_all_indexes视图的结构以下是pg_statio_all_indexes视......
  • 机器人控制系列教程之关节空间运动控制器搭建(2)
    推文:机器人控制系列教程之关节空间运动控制器搭建(1)中,主要讲解了在关节空间中,基于计算力矩的控制系统设计和搭建,我们直接使用了Simulink中的JointSpaceMotionModel模块来进行控制系统的搭建和调试,下面我们将详细讲解一下另外两种控制器。PD控制器在基于PD控制器来控制......
  • 视图与视图控制器生命周期
    在MVC模型中,V指view,负责用户界面的显示、处理用户输入,并将输入传递给控制器。C是指ViewController,充当模型和视图之间的中介。控制器接收用户输入,处理用户请求,并将结果传递给视图以更新显示。本文详细介绍在iOS开发中UIView与UIViewController的生命周期。UIView的生命周期主要......
  • springmvc的视图
    目录6、springmvc的视图6.1、ThymeleafView6.2、转发视图6.3、重定向视图6.4、视图控制器view-contronller6、springmvc的视图SpringMVC中的视图是View接口,视图的作用渲染数据,将模型Model中的数据展示给用户,SpringMVC视图的种类很多,默认有转发视图和重定向视图当工程引入jstl的......
  • 3_3、MFC常用控件用法:列表视图、树型控件和标签
    列表视图、树型和标签1、列表视图控件1.1简介通知消息列表视图控件相关结构体1.2创建CListCtrl类的主要成员函数1.3实例2、树型控件2.1简介通知信息相关数据结构2.2创建CTreeCtrl类的主要成员函数2.3实例3、标签控件3.1简介标签页的通知信息标签控件的相关......
  • Django框架之视图层,form表单文件上传下载,FBV与CBV引入,CBV源码剖析
    ⅠDjango框架之视图层【一】Django的三板斧fromdjango.shortcutsimportHttpResponse,render,redirect,reverse【1】HttpResponse能返回字符串形式的数据HttpResponse是Django中用于创建HTTP响应对象的类,它允许你构建并返回服务器对客户端请求的数据和状态当需......
  • 智能电池充电:使用PID控制器优化SOC(Matlab代码实现)
     ......
  • 「Java开发指南」如何使用Spring注释器实现Spring控制器?(二)
    本教程将引导您使用SpringAnnotator实现Spring控制器,标准Java类被添加到搭建项目中,SpringAnnotatorSpring启用Java类。虽然本教程的重点是Spring控制器,但是SpringAnnotator也可以用于Spring服务、组件和存储库。在本教程中,您将学习如何:创建一个Java类将类配置为Spring控制......
  • 准入控制器(Admission Controller):ResourceQuota,ImagePolicyWebhook
    目录一.系统环境二.前言三.准入控制器简介四.为什么需要准入控制器五.启用/禁用ResourceQuota资源配额5.1查看默认启用/禁用的准入控制器插件5.2ResourceQuota资源配额示例5.3禁用ResourceQuota六.配置ImagePolicyWebhook准入控制器禁止使用后缀为latest的镜像6.1搭建Webhook......
  • MySQL进阶知识之视图、触发器、事务
    【一】MySQL进阶知识之视图【1】视图介绍(1)什么是视图视图就是通过查询得到一张虚拟表,然后保存下来,下次可以直接使用视图也是一张表在计算机科学中,视图(View)是一种虚拟表,其内容是一个或多个基本表的查询结果。视图基于数据库中的数据,通过定义查询语句来构建,并在需要时动......