我一直在使用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
答案 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。