【问题标题】:Use a text field to set the value of a variable使用文本字段设置变量的值
【发布时间】:2015-03-25 14:20:39
【问题描述】:

我的 XIB 中有一些 NSTextField。我为我的一个文本字段创建了操作,它看起来像

- (IBAction)setXPos:(id)sender;

在我的 AppDelegate.h 文件中,我还创建了一个名为 XPosint。在我的 AppDelegate.m 文件中,我无法将 XPos 的值设置为我在文本字段中键入的值。这里有什么帮助吗?我需要做一个

@property

在我的 AppDelegate.h 中?我当前的代码如下所示:

XPos = sender;

但它出错了。

【问题讨论】:

  • 首先,您通常不会在 AppDelegate 中设置变量,因为看起来您可能想在 ViewController 中设置它们..
  • 找一些教程...
  • @NorthBlast 我没有视图控制器。我所拥有的只是应用程序委托。顺便说一句,这是一个 Mac 应用程序
  • @Jason 你可能做错了,因为我刚刚创建了一个虚拟的 mac 应用程序,它包含/创建了 ViewController.. 创建新项目 -> OS X (Application) -> Cocoa Application -> Next -> 项目名称 -> 创建.. 完成!
  • 什么是 IBAction 代码?一般来说(XPos 是浮点数或数字),您可能希望在 NSTextField 中放置一个数字格式化程序,但无论如何获取数值都很容易。发布 IBAction 代码,我们可以提供帮助。

标签: objective-c cocoa xcode4 nstextfield


【解决方案1】:

这很简单。在您的 .h 文件中:

@interface AppDelegate : NSObject <NSApplicationDelegate>

{
    IBOutlet NSTextField *xPosTextBox;
}

- (IBAction)setXPos:(id)sender;

确保将两者都连接到 IB 中的 NSTextField。对于下一步,我假设您在文本框中有一个数字格式化程序,并且 xPos 是一个双精度数。在 applicationDidFinishLaunching 中:

[[xPosTextBox formatter] setFormat:@"##0.000"];
[xPosTextBox setDoubleValue:myInitialValue];

然后在你的 AppDelegate 代码的某处添加一个方法:

- (IBAction)setXPos:(id)sender
{
     xPos = [xPosTextBox doubleValue];
}

简单。

如果你在 applicationDidFinishLaunching 中有一个浮点数:

[[xPosTextBox formatter] setFormat:@"##0.000"];
[xPosTextBox setFloatValue:myInitialValue];

然后是IBAction方法:

- (IBAction)setXPos:(id)sender
{
     xPos = [xPosTextBox floatValue];
}

如果你有一个 int(或 NSInteger),则不需要数字格式化程序,所以在 applicationDidFinishLaunching 中:

[xPosTextBox setIntValue:myInitialValue];
// [xPosTextBox setIntegerValue:myInitialValue]; for NSInteger

然后是IBAction方法:

- (IBAction)setXPos:(id)sender
{
     xPos = [xPosTextBox intValue];
    // xPos = [xPosTextBox integerValue]; for NSInteger
}

【讨论】:

  • 是否可以使用浮点数或整数来执行此操作?
  • 你是最棒的!苹果让像我这样的新手程序员有点困惑。
  • 另外,这会继续检查值,还是只检查一次(在applicationDidFinishLaunching:
  • 抱歉所有问题,但 myInitialValue 是从哪里来的?已经定义了吗? (现在已经很晚了,可能会在早上/放学后实施。)
  • 我已经编辑了我的帖子。在 IB 中,如果您选择此文本字段,那么在属性检查器中,您可以选择何时调用 IBAction。我通常选择“Send on end editing”,当用户按回车键或离开字段时,它会调用 IBAction。
猜你喜欢
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
相关资源
最近更新 更多