ios从故事板xib加载控制器的控制器最先执行什么方法

学会开发你第一个ios应用:5.实现视图控制器
学会开发你第一个ios应用:5.实现视图控制器
要实现视图控制器,需要做好几件事:为用户的姓名添加一个属性、实现 changeGreeting: 方法、确保用户轻敲 Done 按钮时键盘能够收起来。
为用户的姓名添加一个属性
用户的姓名由一个字符串保存着,首先要为该字符串声明一个属性,这样你的代码才能引用它。请将此声明添加到视图控制器的头文件中(即 HelloWorldViewController.h)。
属性声明是一个指令,它会告诉编译器如何为变量生成存取方法(Access method),例如这里的用来保存用户姓名的变量。(完成添加属性声明之后,你会学到什么是存取方法。)
在本教程中,你无需对故事板文件进行任何改动。接下来的代码比较多,为了给自己腾出必要的工作空间,可以点按 View 按钮中的实用工具按钮关闭实用工具区域(或者点选 View & Utilities & Hide Utilities)。
&&& 如何为用户的姓名添加属性声明…
&&&&&&1.& 在工程导航栏中点选 HelloWorldViewController.h。
&&&&&&2.& 在 @end 语句之前,为字符串添加一个 @property 语句。
&&&&&&& 属性声明语句应该是这样的:@property (copy, nonatomic) NSString *userN你可以将这行代码拷贝并粘贴到编辑器面板中,也可以手动输入。如果你要手动输入,就能注意到 Xcode 会针对你的输入提供补全建议。比方说你开始输入 @pro… 时 Xcode 就会猜测你可能想要输入 @property,于是就会在这行语句下面显示一个建议面板,如图:
如果该建议是正确的(如上图的例子),则可以按回车键接受之。
在你继续输入代码时,Xcode 也许会提供一系列建议让你挑选。比如在你输入 NSSt… 的时候,Xcode 可能会显示类似图中的补全建议:
当 Xcode 显示补全列表时,按回车键就可以接受当前高亮显示的那一个语句了。如果高亮显示的并非你所需的语句(比如上图中的例子),可以按方向键在列表中选择合适的项目。
要完成 userName 属性的实现,你还需要让编译器合成相应的存取方法。存取方法是用来读取或设置对象属性的值的方法(有时,存取方法也被称作“getter”和“setter”)。
Xcode 会产生一个警告,提示你必须合成相应的存取方法。在活动查看器里会显示一个黄色的警告符号:
此时,你已经知道 Xcode 的警告是什么,所以不必查看警告的详细信息。若需要查看警告信息的具体内容,你可以点按活动查看器中的黄色警告图标,并在问题导航栏中查看细节:
在本篇教程里,你不会再用到问题导航栏。请点按导航选择条最左边的按钮返回工程导航栏。
接下来,你需要向视图控制器的实现文件(即 HelloWorldViewController.m)中输入代码,让编译器生成存取方法。
&&& 如何为用户的姓名属性生成存取方法…
&&&&&1.&& 在工程导航栏中点选 HelloWorldViewController.m。
&&&&&&2.& 在 @implementation HelloWorldViewController 这行的下面,输入如下代码:
@synthesize userName = _userN
输入这段代码之后,Xcode 就不会再警告你缺少存取方法了,于是警告图标也就从活动查看器中消失了。
当编译器遇到 @synthesize 指令时,它实际上会自动为你生成下面两个存取方法:
- (NSString *)userName
- (void)setUserName:(NSString *)newUserName
由于在 @synthesize 语句里的 userName 添加了一个下划线,编译器便知道 _userName 是 userName 属性的一个实例变量名称。而你之前没有为名为 _userName 的实例变量进行声明,这段代码就会向编译器请求为它也生成存取方法。
注意:编译器生成存取方法只会在已编译的代码中进行,而不会改动你的源代码文件。
实现 changeGreeting: 方法
在上一个章节“对视图进行调整”里,你配置了 Hello 按钮的动作,在用户轻敲按钮时它便给视图控制器发送一个 changeGreeting: 消息。为了响应此消息,你会让视图控制器在标签上显示一段文字,包含用户刚刚输入的内容。具体而言,changeGreeting: 方法应该:
1.从文本框取回字符串,并将视图控制器的 userName 属性值设置为这个字符串。
2.根据 userName 属性创建一个新字符串,并将其显示在标签上。
&&& 如何实现 changeGreeting: 方法…
&&&&&1.&在工程导航栏中点选 HelloWorldViewController.m。你可能要移动到文件末尾才会看到 Xcode 为你添加的 changeGreeting: 存根实现。
&&&&&2.& 将 changeGreeting: 方法的存根实现补全,请输入如下代码:
- (IBAction)changeGreeting:(id)sender {
self.userName = self.textField.
NSString *nameString = self.userN
if ([nameString length] == 0) {
nameString = @"World";
NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString];
self.label.text =
&在 changeGreeting: 方法中有好几个有趣的地方:&
&self.userName = self.textField. 从文本框取回文字,并将视图控制器的 userName 属性值设置为该文字。
&&& 在本篇教程中,你可能不会在其他地方用到存有用户姓名的这个字符串,但仍然需要明白它的作用:它是非常简单的一个模型对象,由视图控制器管理。通常情况下控制器会在自己的模型对象中保存关于应用数据的信息,该数据信息不应该被保存在用户界面元素中,例如 HelloWorld 的文本框。
& NSString *nameString = self.userN 会创建一个新的变量(类型为 NSString)并将它的值设为视图控制器 userName 属性的值。
&@”World” 是一个字符串常量,由一个 NSString 类的实例来表示。如果用户运行应用时没有输入任何文字(即满足 [nameString length] == 0 这个条件),nameString 就会包含字符串“World”。
initWithFormat: 方法是由 Foundation 框架提供给你的。它根据你提供的格式化字符串的格式创建一个新的字符串(这一点和 C 语言中的 printf 函数很相近,你也许对它比较熟悉)。
&在格式化字符串中,%@ 代表字符串对象的占位符。双引号中的其他字符则会原封不动地显示在屏幕上。
将视图控制器配置为文本框的委托
如果你构建并运行应用,你应该会发现点按按钮时标签显示“Hello World!”字样。可是当你点选了文本框并输入一些文字时,则会发现仍然无法通过点按 Done 来收起键盘。
在一个 iOS 应用中,一旦能够接受文字输入的 UI 元素成为 first responder 就会自动调出键盘。反过来,该元素失去 first responder 状态时键盘就会自动收起。(请回忆一下 first responder 是什么:它是在若干事件中第一个接收通知的对象,例如轻敲文本框就会呼出键盘。)虽然不能直接从你的应用给键盘发送消息,但你可以通过改变文字输入 UI 元素的 first responder 状态来呼出和收起键盘。
而 UITextFieldDelegate 协议是由 UIKit 框架定义的,其中包含了一个 textFieldShouldReturn: 方法,它在用户轻敲回车键(无论回车键的标题被改成什么)是被文本框调用。因为我们已经将视图控制器设为了文本框的委托(在上一章节“对视图进行调整”),你可以通过实现这个方法来强制文本框失去 first responder 状态,给它发送一个 resignFirstResponder 消息即可,通过这个方式就能收起键盘。
注意:协议从根本上讲就是一系列方法的集合。如果某个类遵守(或采用了)某个协议,它也就承诺一定会实现协议中规定的所有方法。(协议也可以包含可选方法。)委托协议指定了对象可能发送给委托的所有消息。
&&& 如何配置文本框的委托 HelloWorldViewController …
&&&&&&&1. 在工程导航栏中点选 HelloWorldViewController.m。
&&&&&&&2. 实现 textFieldShouldReturn: 方法。
&&&&&&& 这个方法会让文本框失去 first responder 状态。实现的代码如下:
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == self.textField) {
[theTextField resignFirstResponder];
return YES;
在本应用中,并非一定要包含 theTextField == self.textField 这个检查语句,因为只有一个文本框。不过这个模式非常值得反复使用,因为在某些情况下某个对象可能会成为类型相同的多个对象的委托,你就需要严格区分它们了。
&&&&&&&3. 在工程导航栏中点选 HelloWorldViewController.h。
&&&& &&4.& 在 @interface 行的结尾添加 &UITextFieldDelegate&。
&&&&&&& 你的接口声明应该是这样的:
@interface HelloWorldViewController : UIViewController &UITextFieldDelegate&
这段声明指定了你的 HelloWorldViewController 类要采用 UITextFieldDelegate 协议。
最终测试应用
构建并运行应用吧。这一次,所有功能应该都已达到我们的预期效果。在 iOS 模拟器中,输入完你的姓名后点按 Done 按钮来收起键盘,然后点按 Hello 按钮在标签里显示“Hello, 你的姓名!”。
如果应用还是没能按照预期效果工作,你就需要排查一下问题了。下一章节“故障排除以及代码检查”里将介绍可能出错的几个地方。
那么,你终于把视图控制器的实现也做好了,你做出了你的第一个 iOS 应用,祝贺你!
要实现视图控制器,需要做好几件事:为用户的姓名添加一个属性、实现 changeGreeting: 方法、确保用户轻敲 Done 按钮时键盘能够收起来。
为用户的姓名添加一个属性
分享给朋友:
总条数: 2 当前页: 1/1 & &&&&首页
2017&Copyright该学网()本站部分资源来自网友上传,如有侵权请邮件通知,我们将在3个工作日内删除。正在播放:多个故事板中的页面跳转
下载学院APP缓存视频离线看
购买本课程后即可享受以下服务:
24小时讲师答疑
所有课时永久观看
购买课程返学分
购买本课程后,就可以记笔记了~~
开始记笔记……
记录时间点
我的笔记同学的笔记
购买本课程后,就可以提问题了~~
向老师提问……
记录时间点
我的问题同学的问题iOS开发那些事故事板实现标签导航
故事板实现标签导航
用故事板技术实现标签导航模式。
使用“Tabbed Application”模版,创建一个名为 “TabNavigationStoryborad”的工程。勾选“Use Storyborads”、“Use Automatic Reference Counting”。创建完成之后打开MainStoryboard.storyboard。
三个Controller Scene 会有由一些线连接起来,这些线就是Segue,看到它是否想起了动画书中的“故事板”,事实上,iOS故事板起源于动画行业。故事板开始的一端是“Tab Bar Controller Scene”它是根视图控制器,图中有两个Segue它们描述了“Tab Bar Controller Scene”与“First View Controller Scene”和“Second View Controller Scene”之间的关系。
我们需要修改两个现有的Scene,然后再添加一个Scene,才能满足我们的业务需求。修改两个现有的Scene很简单,按照上一节修改视图控制 器命名就可以了,然后Scene就会跟着变化。添加一个Scene到设计画面中如图6-40所示,从对象库中拖拽一个“View Controller”到设计画面中。
添加一个Scene之后,还需要为它和“Tab Bar Controller Scene”连线,按住control键从“Tab Bar Controller Scene”拖拽鼠标到“View Controller Scene”,然后松开鼠标弹出菜单选择“view controllers”,这样连线就做好了。
然后我们再添加一个视图控制器类“LiaoViewController”。在菜单中选择File-&New-&File… ,在文件模板中选择iOS→Objective-C出现新建文件对话框,在Class项目中输入 “LiaoViewController”,Subclass of 中选择UIViewController,不勾选With XIB for user interface。再回到IB中选中“View Controller Scene”,打开标识检查器,在Custom Class→Class为“LiaoViewController”。
添加图标到工程中,修改标签栏项目中图标和文本,选择“Hei View Controller Scene”→“Hei View Controller”→“Tab Bar Item”,打开属性检查器,“Bar Item”→“Title”为“黑龙江”,“Image”选择为“hei.png”。按照同样的办法修改其他两个视图控制器。
三个视图的设计可以参考上篇文章nib实现部分,拖拽一些Label控件,摆放好位置,修改城市名字,然后再修改视图背景颜色。基于故事板的标签导航模式就实现完毕了。在整个过程中我们没有编写一行代码。
本文出自 “关东升-iOS技术顾问” 博客,请务必保留此出处http://./6775
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
自定义单元格 当苹果公司提供给的单元格样式不能我们的业务需求的时候,我们需要自定义单元格.在iOS 5之前,自定义单元格可以有两种实现方式:代码实现和用xib技术实现.用xib技术实现相对比较简单,创建一个xib文件,然后定义一个继承 UITableViewCell类单元格类即可.在iOS 5之后我们又有了新的选择,故事板实现方式,这种方式比xib方式更简单 ...
iOS开发那些事-移动平台架构设计 /6.html
nib实现标签导航 在目前的Xcode(4.5)版本创建标签导航的应用可以使用工程模板 Tabbed Application.我们可以选择故事板或nib技术实现.故事板创建固然简单,但这种实现方式屏蔽了标签导航很多技术细节,为了更有益于我们学习, 在实现环节我们分别采用了nib技术和storyboard技术.首先我们来看看用nib技术实现的过程. 使用&qu ...
表视图是iOS开发中使用最频繁的视图,我们一般都会选择以表的形式来展现数据,比如通讯录.频道列表等.表视图分段.分组.索引等功能使我们所展 示的数据看起来更规整更有调理,更令人兴奋的是表视图还可以利用细节展示等功能多层次的展示数据,正所谓一表胜千言. 不过,相较于其它控件表视图的使用比较复杂,但是对比于表视图各种灵活多变的功能,我们在使用上花费的努力还是相当 ...
平铺导航模式是非常重要的导航模式.一般用于简单的扁平化信息浏览或任务.扁平化信息是指这些信息之间没有从属的层次关系,如中国的城市中北京.上 海和哈尔滨之间是扁平化信息,而哈尔滨市与黑龙江省之间的关系是从属的层次关系,层次关系信息可以采用标签导航和树形结构导航. 从一个案例开始介绍平铺导航.如果我想为开发一个基于iPhone的&画廊&应用, ...
我们从编写到发布应用会经历3个阶段:模拟器上运行调试.设备上运行调试和发布编译,苹果为了防止非法设备和非开发人员调试和发布应用,使用配置概要文件(Provisioning Profiles)控制在设备上运行调试和发布编译阶段,配置概要文件分为两种:开发配置概要文件和发布配置概要文件 1.创建发布配置概要文件 创建过程是先登录iOS开发中心的配置门户网站(iO ...
对于iOS开发,举例Cocoa框架下的几个设计模式为大家分析.当然,Cocoa框架下关于设计模式的内容远远不止这些,我们选择了常用的几种:单例模式.委托模式.观察者模式.MVC模式. 委托模式 委托模式从GoF 设计装饰(Decorator).适配器(Adapter)和模板方法(Template Method)等模式演变而来.几乎每一个应用都会或多或少地使用 ...
在iOS开发中,以瀑布流浏览图片时通常希望能更多空间来展示内容,这样我们就希望UIScrollView滚动时隐藏及显示导航条和标签栏. 我们希望向下滚动时显示,向上滚动时隐藏,同时希望隐藏和显示的动画能够流畅一点.这样的话,我们需要做到以下几点: 判断是向上还是向下滚动隐藏和显示导航标签栏时有流畅的动画 实现的代码如下: -(void)scrollViewD ...

我要回帖

更多关于 storyboard加载控制器 的文章

 

随机推荐