【问题标题】:How to call multiple user variables - iPhone app如何调用多个用户变量 - iPhone 应用程序
【发布时间】:2012-06-26 21:30:51
【问题描述】:

首先,我是 iPhone 应用程序开发的菜鸟,如果我没有马上理解,请见谅。

我有一个简单的问题,关于如何在句式文本中调用多个变量,变量之间有其他单词。

我正在自学 iPhone 应用程序开发,因此我根据 Apple 题为“您的第一个 iOS 应用程序”的说明编写此代码,并调整代码以更好地学习它。

应用程序的基本布局是两个标记为“姓名”和“职业”的文本字段。下面是一个文本区域(标签)和一个用于提交文本字段信息的按钮。一旦用户输入并提交了他们的姓名和职业,应用程序应该将这些变量放入句子中:“你好,我的名字是 [Name],我是 [Occupation]。”并在文本区域(标签)中显示句子。

这是我目前所拥有的:

- (IBAction)changeGreeting:(id)sender {

self.userName = self.textField.text;

NSString *nameString = self.userName;
if ([nameString length] == 0) {
    nameString = @"Name";
}
    NSString *greeting = [[NSString alloc] initWithFormat:@"Hello, my name is %@,", nameString];
self.label.text = greeting;

self.userOccupation = self.textField.text;

NSString *occupationString = self.userOccupation;
if ([occupationString length] == 0) {
    occupationString = @"Occupation";
}
NSString *description = [[NSString alloc] initWithFormat:@" and I'm a %@.", occupationString];
self.label.text = description;
}

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == self.textField) {
    [theTextField resignFirstResponder];
}
return YES;
}
@end

运行应用并提交姓名“John”和职业“developer”时,输出句子不包含“Hello, my name is John”输出,只有“and I'm a developer”。

我如何获取和调用变量,以使每个变量都显示在句子中所需的位置,使其显示为“您好,我的名字是 John,我是一名开发人员。”一个被打断的句子?

【问题讨论】:

    标签: objective-c ios cocoa-touch


    【解决方案1】:

    您使用相同的文本字段来获取姓名和职业?这很奇怪。

    无论如何,由于您也使用相同的标签来显示句子,因此您将“你好,我的名字是 John”替换为“我是一名开发人员”。用这行:

    NSString *description = [[NSString alloc] initWithFormat:@" and I'm a %@.", occupationString];
    self.label.text = description;
    

    替换最后一行“self.label.text = description;”使用 atbebtg 建议的行,您应该会得到所需的结果。

    self.label.text = [NSString stringWithFormat:@"%@ %@",greeting, description];
    

    顺便说一句,如果您不使用 ARC,请记住释放您使用 alloc 创建的所有变量。

    【讨论】:

    • 谢谢!这有帮助,但我仍然有问题。我有两个不同的文本字段,一个用于名称,另一个用于职业,但我很难在输出句子中同时调用它们。 Name 变量称为 userName,Occupation 是 textFields 上的 userOccupation。当我使用您建议的修改运行应用程序时,它会显示“您好,我的名字是开发人员,我是开发人员。”它把约翰完全排除在外。
    • 有什么难的?如果您有两个文本字段,请使用以下内容: self.label.text = [NSString stringWithFormat:@"Hello, my name is %@ and I'm a %@", nameTextField.text,occupationTextField.text];跨度>
    【解决方案2】:

    您用描述覆盖了 self.label.text 的值,这就是为什么您只看到正在显示的描述值。

    替换这一行

    self.label.text = description;
    

    self.label.text = [NSString stringWithFormat:@"%@ %@",greeting, description];
    

    我的语法可能有点不对。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多