您的首个iOS应用程序-实施视图
Posted ken134207
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了您的首个iOS应用程序-实施视图相关的知识,希望对你有一定的参考价值。
一、为用户姓名添加属性
-
- 您需要为保存用户姓名的字符串添加属性声明,这样您的代码就总能引用该字符串。
- 因为此属性必须是公共的,即对客户端和子类为可见,所以须将此声明添加到视图控制器的头文件,
- 即
HelloWorldViewController.h
。公共属性表示您打算如何使用这一类的对象。 - 属性声明是一个指令,它告诉编译器如何为变量(例如用来保存用户姓名的变量)生成存取方法。
1)为用户姓名添加属性声明:
@property (copy, nonatomic) NSString *userName;
-
- 编译器自动为您声明的任何属性合成存取方法。存取方法是一种获取或设定一个对象的属性的值的方法
- 因此,存取方法有时也称为“getter”和“setter”。
- 例如,编译器为刚刚声明的
userName
属性生成以下的 getter 和 setter 声明及其实现: - (NSString *)userName;
- (void)setUserName:(NSString *)UserName;
- 编译器也自动声明专有实例变量以支持每一个经声明的属性。
- 例如,编译器声明名为
_userName
的实例变量以支持userName
属性。 - 注:编译器将生成的存取方法添加到编译代码,而不是添加到您的源代码中。
二、实现changeGreeting:
方法
- (IBAction)changeGreeting:(id)sender { self.userName = self.textField.text; NSString *nameString = self.userName; if ([nameString length] == 0) { nameString = @"World"; } NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, %@!", nameString]; self.label.text = greeting; }
changeGreeting:
方法中有几项有趣的事值得注意:
-
-
self.userName = self.textField.text;
从文本栏取回文本,并将视图控制器的userName
属性设定为该结果。在本教程中,您不会在其他任何地方用得上那个保存着用户姓名的字符串,
-
但重要的是您要记住它的角色:这正是视图控制器所管理的非常简单的模型对象。
-
一般情况下,控制器应在它自己的模型对象中维护应用程序数据的相关信息。
-
换句话说,应用程序数据不应储存在用户界面元素(例如 HelloWorld 应用程序的文本栏)中。
-
NSString *nameString = self.userName;
创建一个新的变量(为NSString
类型)并将其设为视图控制器的userName
属性。 -
@"World"
是一个字符串常量,用NSString
的实例表示。 -
如果用户运行应用程序但不输入任何文本(即
[nameString length] == 0
),nameString
将包含字符串“World”。 -
initWithFormat:
方法是由 Foundation 框架提供给您的。 -
它创建一个新的字符串,按您提供的格式字符串所规定的格式(很像 ANSI C 库中的
printf
函数)。 -
在格式字符串中,
%@
充当字符串对象的占位符。此格式字符串的双引号中的所有其他字符都将如实显示在屏幕上
-
三、实现视图控制器作为文本框的代理对象的委托方法
-
- 在
HelloWorldViewController.m
文件中实施textFieldShouldReturn:
方法。 - 此方法应该指示文本栏放弃第一响应器的状态。实现结果应该是这样的:
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { if (theTextField == self.textField) { [theTextField resignFirstResponder]; } return YES; }
在本实例中,判断theTextField 是否为当前的文本框是没有意义的,因为在本实例中只有一个文本框,也就只有一个响应者。
- 但是,在大多数情况下不可能只有一个文本框,,这时就需要进行判断,所以这是一个很符合逻辑的判断。
- 在
接下来:
-
- 在项目导航器中选择
HelloWorldViewController.h
。 - 在
@interface
行的末尾,添加<UITextFieldDelegate>
。 - 您的接口声明应如下图所示:
@interface HelloWorldViewController :UIViewController <UITextFieldDelegate>
此声明指定
HelloWorldViewController
类采用了UITextFieldDelegate
协议。 - 最终结果如下;
-
在 Simulator 中,输入您的姓名后,点按“Done”按钮使键盘消失,然后点按“Hello”按钮将“Hello, 您的姓名!”显示在标签中。
如果应用程序的表现不是您所期望的,则需要进行故障排除。
- 在项目导航器中选择
以上是关于您的首个iOS应用程序-实施视图的主要内容,如果未能解决你的问题,请参考以下文章
基于 Amazon Amplify 构建自己的首个 iOS 应用程序
打造您的首个 app bundle | MAD Skills
基于 Amazon Amplify 构建自己的首个 iOS 应用程序