iOS开发——导航控制器

iOS 18 导航栏插入动画会导致背景短暂变白的解决 在本篇博文中,我们介绍了为何在向 iOS 导航栏插入内容时其背景会短暂变白,并随后讨论了完美且简单的解决之道! 阅读详情
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; font-family: Menlo; color: rgb(75, 209, 87);">
</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; font-family: Menlo; color: rgb(75, 209, 87);">AppDelegate.m</p>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    
    // 初始化导航控制的根控制器
    ViewController *vc = [[ViewController alloc] init];
    // 初始化导航控制器
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
    [vc release];
    
    // 显示工具栏
    nav.toolbarHidden = NO;
    
    // 导航栏和工具栏的外观是全局定义的
    // 配置颜色
    nav.navigationBar.barTintColor = [UIColor redColor];
    nav.toolbar.barTintColor = [UIColor redColor];
    
    // 配置按钮主色调
    nav.navigationBar.tintColor = [UIColor whiteColor];
    nav.toolbar.tintColor = [UIColor whiteColor];
    
    // 配置背景图
    [nav.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav_bg_ios7"] forBarMetrics:UIBarMetricsDefault];
    [nav.toolbar setBackgroundImage:[UIImage imageNamed:@"nav_bg"] forToolbarPosition:UIBarPositionBottom barMetrics:UIBarMetricsDefault];
    
    // 配置是否透明
    nav.navigationBar.translucent = YES;
    nav.toolbar.translucent = YES;
    
    // 配置导航栏标题文本显示
    // NSFontAttributeName:文本字体类型key
    // NSForegroundColorAttributeName:文本色key
    // NSShadowAttributeName:文本阴影key
    NSShadow *shadow = [[NSShadow alloc] init];
    shadow.shadowColor = [UIColor blackColor];
    shadow.shadowOffset = CGSizeMake(5, 5);
    NSDictionary *titleTextAttributes = @{NSFontAttributeName: [UIFont systemFontOfSize:17], NSForegroundColorAttributeName: [UIColor whiteColor], NSShadowAttributeName: shadow};
    [shadow release];
    nav.navigationBar.titleTextAttributes = titleTextAttributes;
    
    // 显示导航控制器
    // 一旦使用了导航控制器包装内容控制器,显示时优先显示导航控制器。
    self.window.rootViewController = nav;
    [nav release];
    
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

<p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; font-family: Menlo; color: rgb(75, 209, 87);">ViewController.m</p>
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; font-family: 'Heiti SC Light'; color: rgb(75, 209, 87);"><span style="font-family: Menlo;">/* </span>配置导航栏标题<span style="font-family: Menlo;"> */</span></p>
<pre name="code" class="objc">// 1.配置控制器标题
    self.title = title;
    // 2.配置导航栏标题(直接设置)
    // UINavigationItem:所有导航栏的配置,包括标题和按钮,都是基于该对象。
    self.navigationItem.title = @"首页";

<p style="margin-top: 0px; margin-bottom: 0px; font-size: 18px; font-family: Menlo; color: rgb(75, 209, 87);">/* <span style="font-family: 'Heiti SC Light';">配置工具栏</span> */</p>
// 导航控制器每一个页面的导航栏和工具栏之上按钮或者标题都是独立存在的,需要基于每一个单独的页面取定制。
    
    // 使用UIBarButtonItem来配置导航栏和工具栏按钮
    
    // 返回根页面
    UIBarButtonItem *backToRootItem = [[UIBarButtonItem alloc] initWithTitle:@"Back To Root" style:UIBarButtonItemStylePlain target:self action:@selector(barButtonPressed:)];
    backToRootItem.tag = 10;
    
    // 下一页
    UIBarButtonItem *nextItem = [[UIBarButtonItem alloc] initWithTitle:@"Next" style:UIBarButtonItemStylePlain target:self action:@selector(barButtonPressed:)];
    nextItem.tag = 11;
    
    
    // 可延展空间控件
    UIBarButtonItem *flexibleItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:NULL];
    
    self.toolbarItems = @[backToRootItem, flexibleItem, nextItem];
    [backToRootItem release];
    [flexibleItem release];
    [nextItem release];

/* 定制导航栏返回按钮 */


UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:[NSString stringWithFormat:@"返回%u", count] style:UIBarButtonItemStylePlain target:nil action:NULL];
    self.navigationItem.backBarButtonItem = backItem;
    [backItem release];

/* 定制导航栏按钮 */


  // 刷新
    UIBarButtonItem *refreshItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(barButtonPressed:)];
    refreshItem.tag = 12;
    
    // 分享
    UIBarButtonItem *actionItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(barButtonPressed:)];
    actionItem.tag = 13;
    
    self.navigationItem.rightBarButtonItems = @[actionItem, refreshItem];
    [actionItem release];
    [refreshItem release];


<pre name="code" class="objc">- (void)refresh {
    
    // 初始化警告框UIAlertiew
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"温馨提示" message:@"网络异常,请稍后再试!" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", @"重试", @"稍后再试",  nil];
    // 显示警告框
    [alertView show];
    [alertView release];
}

- (void)share {
    
    // 初始化操作表单UIActionSheet
    UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"分享" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"注销" otherButtonTitles:@"新浪微博", @"腾讯微博", nil];
    // 显示操作表单
    [actionSheet showInView:self.view];
    [actionSheet release];
}

#pragma mark - UIAlertViewDelegate methods

// 用户点击按钮后调用
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    
    NSLog(@"alet view button index = %d", buttonIndex);
}

#pragma mark - UIActionSheetDelegate methods

// 按钮点击时调用
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    
    NSLog(@"action sheet button index = %d", buttonIndex);
}






26、iOS开发:表格视图与导航控制器详解 本文深入讲解了iOS开发中表格视图与导航控制器的核心概念和实际应用。内容涵盖表格视图的分区索引设置、导航控制器的视图栈管理、字体浏览器应用的构建步骤以及不同设备上的导航控制器差异。通过详细的步骤说明和示例,帮助开发者掌握如何在实际项目中处理复杂的分层数据,并优化用户体验。 阅读详情

相关推荐

23、iOS 开发:导航控制器与表格视图详解

本文详解了 iOS 开发中导航控制器与表格视图的使用,包括导航控制器的栈结构原理、表格视图的搜索功能,以及如何结合导航控制器和表格视图构建分层应用。文章还介绍了搭建 Nav 应用骨架的具体步骤,并提供了代码解析和开发建议,帮助开发者掌握 iOS 分层界面的设计与实现。

s8t9u0v1w的博客 241

Navigation Bar的简单设置

前面的一篇文章《iOS开发16:使用Navigation Controller切换视图》中的小例子在运行时,屏幕上方出现的工具栏就是Navigation Bar,而所谓UINavigationItem就可以理解为Navigation Bar中的内容,通过编辑UINavigationItem,我们可以使得在Navigation Bar中显示想要的东西,比如设置标题、添加按钮等。 这篇博客...

weixin_30914981的博客 299

25、iOS开发:表视图与导航控制器的深入探索

本文深入探讨了iOS开发中表视图与导航控制器的使用方法。从表视图的基本操作,如添加导航栏、自定义单元格,到导航控制器的栈管理和层次数据的展示,再到Nav应用中各个子控制器的实现,详细介绍了如何构建一个功能丰富的iOS应用来展示和处理层次数据。通过具体示例,帮助开发者掌握了一系列与显示层次数据相关的常见任务,为后续开发更复杂的应用奠定了基础。

brown的博客 66

IOS开发UI篇—导航控制器属性和基本使用

IOS开发UI篇—导航控制器属性和基本使用 一、导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1)  1.创建一个导航控制器     UINavigationController *nav=[[UINavigationControlleralloc]init]; 2.设置导航控制器为window的根视图     self.window.rootView...

weixin_34223655的博客 178

28、iOS开发:表视图与导航控制器深度解析

本文深入解析了iOS开发中的表视图与导航控制器,重点介绍了表视图的使用、视图调试技巧以及导航控制器的基本原理与应用。通过构建一个字体浏览器应用,详细讲解了如何展示字体家族列表、实现搜索功能及处理用户交互操作。文章还探讨了表视图和导航控制器在实际项目中的广泛应用,帮助开发者掌握构建分层数据展示和导航逻辑的核心技能。

blue42的博客 110

25、iOS开发:表格视图与导航控制器的深入探索

本文深入探讨了iOS开发中表格视图(Table Views)的搜索功能实现与优化,以及导航控制器(UINavigationController)与表格视图的结合使用。内容涵盖搜索逻辑、数据源和委托方法的修改、搜索栏的交互处理、用户体验优化(如隐藏索引和添加放大镜图标),以及导航控制器与表格视图结合的多种应用场景,包括从表格视图深入子表格、内容视图、多选功能和删除行操作。文章通过代码示例和流程图详细解析了如何构建高效、易用的iOS应用,适合希望提升iOS界面开发能力的开发者。

nice1的博客 89

iOS开发,删除某个导航控制器

iOS开发,界面跳转过程中,删除某一个导航控制器 方法一、直接删除第几个控制器 NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: self.navigationController.viewControllers]; [navigationArray removeObjectAtIndex: 2]; self.navigationController.viewControllers = navigationAr

weixin_42325704的博客 1426

26、iOS开发:导航控制器与表格视图的实现

本博客详细介绍了如何在iOS开发中实现导航控制器与表格视图的结合使用,包括导航控制器的设置、自定义视图控制器的创建、图片资源的添加、子控制器的实现以及相关方法的详细分析。通过具体的代码示例和步骤说明,帮助开发者快速掌握基于导航控制器和表格视图的应用开发基础,并提供了进一步优化和拓展的建议。

brown的博客 75

ios 监听一个控制器的属性_IOS开发UI篇—导航控制器属性和基本使用

IOS开发UI篇—导航控制器属性和基本使用一、导航控制器的一些属性和基本使用1.把子控制器添加到导航控制器中的四种方法(1)1.创建一个导航控制器UINavigationController*nav=[[UINavigationControlleralloc]init];2.设置导航控制器为window的根视图self.window.rootViewController=nav;3.添加YYOne...

weixin_39652869的博客 210

11、iOS开发:导航控制器、Segue与详情视图优化

本文详细介绍了如何在iOS开发中使用导航控制器和Segue来构建分层界面,并通过创建详情视图控制器展示更多餐厅信息。内容涵盖嵌入导航控制器、使用Storyboard设计界面、通过Segue传递数据、优化详情视图、添加自定义字体、实现自调整单元格等实用技巧,帮助开发者提升iOS应用的用户体验和界面美观度。

raspberrypi5的博客 163

30、iOS开发:从导航控制器到集合视图的探索

本文详细探讨了iOS开发中导航控制器与表格视图的基础操作,并进一步介绍了集合视图UICollectionView的使用。通过创建一个名为DialogViewer的示例项目,讲解了如何修复视图控制器类、定义自定义单元格、配置视图控制器、提供内容单元格以及实现布局流动等关键步骤。最后还总结了相关技术点,并提出了实际应用建议与拓展思考,帮助开发者更好地掌握iOS界面开发的核心技能。

book8的博客 115

iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期

iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期 一、基本过程 新建一个项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉。 在storyboard中,默认的控制器是View Controller,而我们需要的是导航控制器,那么就把系统的给删掉,拖一个导航控制器进来,导航控制器中默认的第一个子控制器是一个tablevi...

a359798678的博客 106

31、iOS开发:导航控制器、表格视图与故事板的应用

本文详细介绍了在iOS开发中如何结合使用导航控制器、表格视图和故事板来提升开发效率和应用结构的清晰度。内容涵盖了文本字段代理方法的实现、可编辑详细视图控制器的添加、键盘返回按钮的优化,以及故事板的引入与优势分析。同时,文章通过实例演示了如何在Xcode中使用故事板创建简单应用,并探讨了其适用场景与最佳实践。适合希望深入了解iOS界面开发与视图管理的开发者参考学习。

info6的博客 61

ios开发返回按钮消失_iOS开发——导航控制器返回按钮,返回到指定界面

大家都知道导航控制器中的返回按钮,会返回到上一个页面,但有时项目中有特殊要求,需要返回到指定的页面,我是这么实现的。1、首先是监听这个返回按钮的方法,我是通过自定义返回按钮监听的。// 自定义返回按钮self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed...

weixin_39943202的博客 168

28、iOS开发:导航控制器与表格视图应用详解

本文详细介绍了iOS开发中导航控制器与表格视图的应用,重点讲解了导航控制器的栈结构和工作原理,并通过构建一个字体浏览器应用示例,演示了如何实现分层数据展示和管理收藏列表的功能。同时,还涵盖了附件图标的使用规则和导航控制器与表格视图的协同工作机制。

iii12的专栏 125

14、iOS开发:导航控制器与表格视图的使用指南

本文详细介绍了iOS开发中导航控制器与表格视图的使用方法。内容涵盖导航控制器的基本结构、界面配置、栈管理及在故事板中的集成操作;同时深入讲解了表格视图的类型(静态与动态)、单元格复用机制、数据源与委托协议的实现,帮助开发者构建结构清晰、交互流畅的列表界面和多层级导航应用。

bread的博客 59
上一篇: iOS开发——基本控件(UIButton,UILabel,UITextField,UISwitch,UISlider,UISegmentedControl)
下一篇: iOS开发——状态栏隐藏与显示statusBar
iOS_development
博客等级 码龄12年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值