我放在文本字段中的任何数字,它在标签中显示为0

时间:2012-07-15 21:33:54

标签: iphone objective-c ios uitextfield uilabel

我一直在使用objective-c做一件事,但我是这个语言的初学者,这就是我所做的:

有一个名为“firstviewclass”的类,它控制着我的第一个视图,在这个视图中有一个用户放置数字的文本字段。 textfield在firstviewclass.h中,名为“setNumber”。还有另一个名为“secondviewclass”的类控制着第二个视图,在这个视图中有一个标签位于secondviewclass.h中,我希望这个标签能够重现用户放在文本域中的值。第一个视图,但是当我在iOS模拟器上测试它在文本字段中放置的任何数字时,它在标签中显示为0 ...我真的不知道该怎么做!

我的代码:

firstviewclass.h:

#import <UIKit/UIKit.h>

@interface firstviewclass : UIViewController

@property (strong, nonatomic) IBOutlet UITextField *setNumber;

- (IBAction)gotonextview:(id)sender;

@end

secondviewclass.h:

#import <UIKit/UIKit.h>
#import "firstviewclass.h"

@interface secondviewclass : UIViewController

@property (weak, nonatomic) IBOutlet UILabel *labelthatrecivesthetextfieldvalue;

@end

secondviewclass.m:

#import "secondviewclass.h"
#import "firstviewclass.h"

@implementation secondviewclass
@synthesize labelthatrecivesthetextfieldvalue;


-(void)viewDidLoad{
    [super viewDidLoad];

    firstviewclass *object = [[firstviewclass alloc] init];

    NSString *string = [[NSString alloc] initWithFormat:@"%i", [object.setNumber.text intValue]];

    labelthatrecivesthetextfieldvalue.text = string;

}

@end

3 个答案:

答案 0 :(得分:1)

在secondviewclass的viewDidLoad中,您正在创建firstviewclass的新实例,然后访问该标签的属性。由于您没有将其设置为任何内容,因此它将始终返回零。

你可以发布gotonextview方法的实现吗?

编辑:

我认为您需要从第一个视图控制器设置label属性。所以在你的gotonextview方法中,添加以下行:

secondviewclass.labelthatrecivesthetextfieldvalue.text = self.setNumber.text;

我承认我在你的命名方案中有点迷失,但这可能有效。

答案 1 :(得分:1)

您是如何开始设置标签的?来自viewDidLoad?如果是这样,则 0 将是正确的,因为您尚未将object.setNumber.text设置为任何内容。此外,您没有从第一个viewController继承数据。您需要让第二个viewController知道该数字是什么。尝试在NSUserDefaults中设置此值,然后在第二个viewController中,从默认值中加载该值。

答案 2 :(得分:1)

首先,我强烈建议不要命名属性或实例变量setSomething。对于阅读代码的人来说,这会让人感到头痛,因为它总是看起来像是在试图打电话给一个二传手。另外,请将您的班级名称大写。

您的实际问题是,viewDidLoad您正在创建firstviewclass的实例,然后尝试从setNumber获取值。那是在用户有机会输入任何内容之前。

另外,setNumber中的firstviewclass出口可能无处可去,因为您自己实例化该类,而不是加载NIB。


编辑(啊,故事板,d&#39;哦):

对于Storyboard,您需要将setNumber文本字段的值传递给第二个视图。

首先,删除firstviewclass *object = [[firstviewclass alloc] init];行。

然后,在您的第一个视图控制器的prepareForSegue方法中,您可以将setNumber文本字段的值传递给第二个视图控制器中的属性,并从那里使用它(例如在configureView)。

我建议working through Apple's Storyboard tutorial,它会逐步显示您需要做什么。您现在遇到问题的步骤是here