九天猎人 发表于 2024-7-10 00:14:38

iOS开发-视图控制器UINavigationController的先容与基本使用

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


[*]管理视图控制器堆栈:使用一个堆栈数据布局来管理视图控制器。堆栈的顶端是当前表现的视图控制器。
https://img2024.cnblogs.com/blog/3451917/202406/3451917-20240630232736213-2069874627.png
[*]导航栏:在屏幕顶部表现一个导航栏,通常包含返回按钮(左端)、标题(中心)和其他控制项(右方)。
https://img2024.cnblogs.com/blog/3451917/202406/3451917-20240630232833192-2120547552.png

[*]导航动画:提供标准的推入(push)和弹出(pop)动画,加强用户的导航体验。
如何使用 UINavigationController

初始化和基本使用

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

@implementation AppDelegate

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

@end管理视图控制器堆栈

推入视图控制器

使用 pushViewController:animated: 方法将一个视图控制器推入导航堆栈,并表现它。
UIViewController *newVC = [ init];
newVC.view.backgroundColor = ;
;弹出视图控制器

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

设置导航栏标题

可以在视图控制器中设置导航栏的标题。
self.title = @"Home";自定义导航栏按钮

可以在视图控制器中添加自定义的导航栏按钮。
UIBarButtonItem *rightButton = [ initWithTitle:@"Right" style:UIBarButtonItemStylePlain target:self action:@selector(rightButtonTapped)];
self.navigationItem.rightBarButtonItem = rightButton;实现按钮的动作:
- (void)rightButtonTapped {
    NSLog(@"Right button tapped");
}导航栏样式定制

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

self.navigationController.navigationBar.barTintColor = ;
self.navigationController.navigationBar.tintColor = ; // 设置返回按钮和其他按钮的颜色
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : }; // 设置标题颜色设置透明导航栏

forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = ;
self.navigationController.navigationBar.translucent = YES;处置处罚导航控制器中的返回动作

可以通过实现 UINavigationControllerDelegate 协议来处置处罚导航控制器中的返回动作。
示例:拦截返回按钮动作

@interface MyViewController () <UINavigationControllerDelegate>
@end

@implementation MyViewController

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

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

@end
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: iOS开发-视图控制器UINavigationController的先容与基本使用