标签:指定 维护 模型 rop res nsstring 有趣 inter 常量
一、为用户姓名添加属性
HelloWorldViewController.h。公共属性表示您打算如何使用这一类的对象。1)为用户姓名添加属性声明:
@property (copy, nonatomic) NSString *userName;
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, 您的姓名!”显示在标签中。
如果应用程序的表现不是您所期望的,则需要进行故障排除。
标签:指定 维护 模型 rop res nsstring 有趣 inter 常量
原文地址:https://www.cnblogs.com/ken134207/p/10222088.html