标签:指定 维护 模型 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