iOS开发——视图及视图控制器

7、 视图控制器在iOS开发中的应用与优化 本文详细介绍了视图控制器在iOS开发中的应用与优化,包括最简单的视图控制器、标签栏控制器、导航控制器和模态视图控制器的使用场景及实现方法。通过具体示例展示了如何利用这些视图控制器简化应用程序开发过程,提高代码可维护性和可扩展性。 阅读详情
// 自定义初始化方法,通过加载可视化界面开发xib文件来加载控制器自定义界面。
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

// 视图控制器视图加载完成(并未显示出来)
// 视图控制器的入口方法
// 自定义界面初始化,基本用户数据加载,网络请求等。
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self initializeAppearance];
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

// 视图将要显示
- (void)viewWillAppear:(BOOL)animated {
    
    [super viewWillAppear:animated];
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

// 视图显示完成
- (void)viewDidAppear:(BOOL)animated {
    
    [super viewDidAppear:animated];
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

// 视图将要隐藏
- (void)viewWillDisappear:(BOOL)animated {
    
    [super viewWillDisappear:animated];
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

// 视图隐藏完成
- (void)viewDidDisappear:(BOOL)animated {
    
    [super viewDidDisappear:animated];
    
    NSLog(@"%@", NSStringFromSelector(_cmd));
}

- (void)initializeAppearance {
    
    // 配置视图控制器视图背景色,默认透明色,界面推送时透明色会产生残影效果。
    self.view.backgroundColor = [UIColor whiteColor];
    
    /* UIView初始化及属性 */
    UIView *blackView = [[UIView alloc] initWithFrame:CGRectMake(60, 184, 200, 200)];
    // 配置视图背景色
    blackView.backgroundColor = [UIColor blackColor];
    // 配置视图的透明度,0-1,1表示不透明,0表示透明,当透明度为0时视图默认被隐藏。
    blackView.alpha = 1.0;
    // 配置视图是否被隐藏,默认为NO
    blackView.hidden = NO;
    // 配置视图标签,标签值唯一,标签值大于10且为整形。
    blackView.tag = 10;
    [self.view addSubview:blackView];
    [blackView release];
    
    // frame:决定了视图"在父视图坐标系中"的大小和左上角点的位置;
    // NSLog(@"frame = %@", NSStringFromCGRect(blackView.frame));
    // bounds:决定了视图"在自身坐标系中"的大小和左上角点的位置;
    // NSLog(@"bounds = %@", NSStringFromCGRect(blackView.bounds));
    // center:决定了视图"在父视图坐标系中"的中心点位置。
    // NSLog(@"center = %@", NSStringFromCGPoint(blackView.center));
    
    // subviews:视图所管理的所有子视图集合,视图后添加的在集合的末尾;
    // NSLog(@"view subviews = %@", self.view.subviews);
    // superview:管理当前视图的父视图。
    // NSLog(@"blackview superview = %@", blackView.superview);
    
    /* 视图层级 */
    UIView *grayView = [[UIView alloc] initWithFrame:CGRectMake(90, 214, 200, 200)];
    grayView.backgroundColor = [UIColor grayColor];
    grayView.tag = 11;
    // [self.window addSubview:grayView];
    // [grayView release];
    
    // 视图调整方法
    // [self.window sendSubviewToBack:grayView];
    // [self.window bringSubviewToFront:blackView];
    // [self.window exchangeSubviewAtIndex:1 withSubviewAtIndex:0];
    
    // 视图插入方法
    [self.view insertSubview:grayView belowSubview:blackView];
    [grayView release];
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.bounds = CGRectMake(0, 0, 100, 30);
    button.center = CGPointMake(160, 450);
    [button setTitle:@"确定"
            forState:UIControlStateNormal];
    [button addTarget:self
               action:@selector(buttonPressed:)
     forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

- (void)buttonPressed:(UIButton *)sender {
    
    /*
    // 通过tag值视图
    UIView *blackView = [self.view viewWithTag:10];
    UIView *grayView = [self.view viewWithTag:11];
    NSLog(@"black view = %@", blackView);
    NSLog(@"gray view = %@", grayView);
    
    // 视图移除,父视图负责release子视图一次,视图被释放销毁,内存回收
    [blackView removeFromSuperview];
    [grayView removeFromSuperview];
     */
    
    /* 视图控制器页面推送:模态视图控制器推送 */
    // 1.创建视图控制器
    DetailViewController *detailVC = [[DetailViewController alloc] init];
    // 2.新控制器推送显示
    // 当前控制器会持有被显示的控制器,retainCount + 1
    [self presentViewController:detailVC animated:YES completion:^{
        // NSLog(@"detail view controller show!");
    }];
    // 3.新控制器内存管理释放
    [detailVC release];
}

// 接收到内存警告时调用
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

16、深入探索iOS表格视图控制器开发 本文深入探讨了iOS开发中表格视图控制器的实现方法,包括如何创建表格视图、遵循数据源和代理协议、处理用户交互操作以及与模型对象的结合使用。通过一个具体的示例代码,详细展示了表格视图的基本功能,如显示数据、删除行和点击事件处理。此外,还介绍了进一步优化和扩展表格视图的思路,为开发复杂功能的表格视图提供了实用指导。 阅读详情

相关推荐

42、iOS视图控制器开发全解析

本文全面解析了iOS视图控制器开发的关键知识点,包括展开转场(Unwind Segue)机制及定制方法、视图控制器的生命周期事件及其正确使用方式、内存管理策略以及优化技术(如懒加载、NSCache、NSPurgeableData等),同时探讨了后台内存使用优化和状态恢复等内容。通过详细的流程说明、代码示例和最佳实践建议,帮助开发者构建高效、稳定的iOS应用,提升用户体验。

fox11的博客 103

【IOS学习】IOS开发之视图和视图控制器

视图(View), 视图控制器(ViewController)是IOS开发UI部分比较重要的东西。在学习视图这一块的东西的时候,感觉和Java Swing中的Panel差不多。在UIKit框架中都有一个UIWindow来容纳我们的View。应用程序中几乎全部的可视控件都是UIView以及UIView的子类的实例,并且UIWindow也是UIView的子类。UIWindow可以不借助于父类视图显示在

practice makes perfect 658

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

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

book8的博客 117

IOS开发之视图和视图控制器

视图(View), 视图控制器(ViewController)是IOS开发UI部分比较重要的东西。在学习视图这一块的东西的时候,感觉和Java Swing中的Panel差不多。在UIKit框架中都有一个UIWindow来容纳我们的View。应用程序中几乎全部的可视控件都是UIView以及UIView的子类的实例,并且UIWindow也是UIView的子类。UIWindow可以不借助于父类视图显示在

sulan2131的博客 345

6、iOS应用开发:视图控制器模板详解

本文详细解析了iOS开发中常用的视图控制器模板,包括基于分割视图的应用模板和标签栏应用模板。通过示例项目,介绍了分割视图的主-详细界面实现、设备方向适配、表格视图数据绑定,以及标签栏应用的多视图切换和项目添加方法。适合希望掌握iOS界面布局和视图控制器管理的开发者参考学习。

beer8的博客 62

35、iOS 开发:分屏视图控制器的使用与定制

本文详细介绍了在iOS开发中如何使用和定制分屏视图控制器(UISplitViewController),包括解决语言设置丢失问题、不同iPhone设备上的分屏表现差异、以及如何让所有iPhone实现类似iPhone 6 Plus的分屏效果。通过代码示例和详细说明,帮助开发者更好地掌握分屏视图控制器的定制技巧,并探讨了实际应用中的注意事项和优化建议。

blue42的博客 365

iOS开发中视图控制器ViewControllers之间的数据传递

iOS开发中视图控制器ViewControllers之间的数据传递 这里我们用一个demo来说明ios是如何在视图控制器之间传递重要的参数的。本文先从手写UI来讨论,在下一篇文章中讨论在storyboard中传递数据。 首先新建一个空工程,并添加一个根视图控制器类,如下图所示: # 在函数didFinishLunchingWithOption中添加几行代码,完成后如下: ...

aibiao0099的博客 191

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

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

blue42的博客 110

iOS开发学习笔记③ - 视图控制器

视图控制器视图控制器是UIViewController类或其子类的对象。 每个控制器都负责管理一个视图层次结构,包括处理视图相关用户事件,以及将整个视图层次结构添加到应用窗口。以下以建立一个控制视图A和视图B的控制器为例。UIViewController的view属性 1、 首先为A,B建立两个UIViewController:ControllerA和ControllerB继承了UIViewC

天鹅绒房间 799

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

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

s8t9u0v1w的博客 241

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

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

brown的博客 66

iOS开发视图控制器(ViewController)调用[super viewXXX]的简单理解

iOS开发视图控制器(ViewController)调用[super viewXXX]的简单理解本人刚刚进入iOS开发行业,许多理解可能存在错误,希望各位老司机看到能够指出。那么言归正传,记得在学习iOS开发的时候,老师讲过,- (void)viewDidLoad 、这类的函数中,要先调用父类的方法即:[super viewDidLoad]来完成一些事情,那么这些方法究竟做了什么呢?于是我就创建了多

Cold_of_22F的博客 3293

掌握iOS开发中的视图控制器管理和视图动态创建

本章节详细介绍了iOS应用中,特别是在iPad上使用分割视图控制器创建主从视图结构的技巧。内容涉及如何通过检查设备类型来决定UI的创建,如何使用代理模式在两个视图控制器之间传递信息,以及如何动态地为视图控制器创建视图。这些技巧对于开发具有复杂交互和动态界面的应用程序至关重要。

weixin_31659095的博客 297

玩转iOS开发 - 视图控制器生命周期

视图控制器生命周期

Focus Now 3132

Workbuddy+DeepSeek V4傻瓜流配置全指南:API接入、模型切换与Agent实战

AI编程助手的核心价值不在于模型本身,而在于如何稳定、安全、低门槛地调用其能力。Agent作为智能体范式,依赖可靠的运行时环境与标准化API通信;DeepSeek V4系列凭借高吞吐、低延迟和强工具调用支持,成为当前生产级Agent的理想引擎。Workbuddy则通过本地配置管理、环境变量注入与UTF-8无BOM容错等工程设计,将复杂部署简化为可复现、可版本化、可团队协同的实践流程。本文聚焦API接入路径下的真实卡点——从Key获取验证、models.json字段语义到沙箱权限控制,覆盖开发者在Window

weixin_33702545的博客 2357

lvds接口_LVDS,接口,时序讲解,非常好的文章

欢迎FPGA工程师加入官方微信技术群点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群1.1.1 LVDS接口分类1.1.1.1 单路6bit LVDS这种接口电路中,采用单路方式传输,每个基色信号采用6位数据,共18位RGB数据,因此,也称18位或18bit LVDS接口。此,也称18位或18bit LVDS接口。1.1.1.2 双路6bit LVDS这种接口电...

weixin_39639286的博客 1902

iOS开发之视图控制器(UIViewController)

点击打开链接

qq164836284的专栏 630

主板USB接口全部失效解决方案(通用串行总线USB控制器有黄色叹号)保姆级教程亲测有效

通用串行总线控制器总是有叹号解决办法 办公室的崩腾时代老电脑,疫情期间没人用,来了开机之后发现鼠标键盘都用不了,本以为是主机放时间长出了问题,后来想起来就百度了“鼠标键盘都失效”的标题,结果发现了“串行总线控制器总是感叹号”的关联问题。正好办公室电脑都装有teamviwer常用来远程办公(在家偷懒)。所以通过远程发现电脑室可以运行的。并在控制面板发现:通用串行总线控制器总是感叹号,插入外设时USB无反应。如图:​ 并且右键选中其中一个,点击最后一个选项:“属性” 可以发现“设备状态”中会提示“由...

xiao_bai_0_0的博客 2万+
上一篇: iOS开发——程序的基本结构
下一篇: iOS开发——基本控件(UIButton,UILabel,UITextField,UISwitch,UISlider,UISegmentedControl)
iOS_development
博客等级 码龄12年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值