Iphone 多视图应用程序。无法更改文本字段值
嘿,伙计们,我正在制作一个有两个视图的应用程序。第一个视图是用户输入数字的位置,以及他们点击计算按钮的时间。。它会将他们带到一个新的视图,在该视图中,答案显示在文本字段上。计算由另一个文件处理。“calc.h”和“calc.m” 这是主视图文件(用户输入数字的视图) 显示答案的视图的“.h”文件Iphone 多视图应用程序。无法更改文本字段值,iphone,objective-c,Iphone,Objective C,嘿,伙计们,我正在制作一个有两个视图的应用程序。第一个视图是用户输入数字的位置,以及他们点击计算按钮的时间。。它会将他们带到一个新的视图,在该视图中,答案显示在文本字段上。计算由另一个文件处理。“calc.h”和“calc.m” 这是主视图文件(用户输入数字的视图) 显示答案的视图的“.h”文件 #import <UIKit/UIKit.h> @interface answer : UIViewController { IBOutlet UITextField *tex
#import <UIKit/UIKit.h>
@interface answer : UIViewController {
IBOutlet UITextField *text;//textfield to display answer
}
@property(nonatomic,retain) UITextField *text;
-(IBAction)back:(id)sender;
@end
下一个是执行计算的objective c类文件。它有一个函数进行计算,这里是“.h”和“.m”文件
“.h”
如您所见,上面的函数计算答案..将其放入字符串并将其设置为textfield。但是textfield没有显示任何内容。因此,这里的问题是,即使我从textfield创建了一个对象,我也无法访问它。…问题是您的“ans”UIViewController
尚未加载
执行此操作的最标准方法是为
UIViewController
“ans”提供一个带有结果的@属性。然后在“ans”viewDidLoad
方法中,将文本字段设置为适当的值 我对您试图实现的目标有点困惑,您想在另一个类中使用NSString还是文本UITextField?如果是这种情况,则为携带您想要显示的内容的字符串提供一个@属性
,然后为其设置您想要的字符串值,然后在第二个类中导入calc.h
(#import“calc.h”
),然后在接口中创建此calc*getString
为此创建一个@属性
,@合成它。然后,要从calc中获取字符串的值,请执行类似以下操作getString.SomeStringName
,现在您可以使用它执行任何操作
我想这就是你想要的?如果没有,请随意评论。你好:)
编辑:我将给你一个例子,因为这是一个有点混乱的方式,我写它lol
这是你的calc.h文件,还记得我是在线输入的,不是在xcode中输入的,所以如果我拼写错误或犯了一个简单的错误,这就是原因:
@interface calc : UIViewController {
NSString *answer;
}
@property (nonatomic, retain) NSString *answer;
@end
你的h可以有更多
现在让我们跳到你的.m
@implementation calc
@synthesize answer;
//do all the work to get the answer, once you have it do this
[answer retain];
//load your new view controller
让我们跳转到将要加载的其他视图控制器
这是它的.h文件
#import "calc.h"
@interface secondController : UIViewController {
calc *getAnswer;
}
@property (nonatomic, retain) calc *getAnswer;
@end
然后去你的办公室
@implementation secondController
@synthesize getAnswer;
-(void)viewDidLoad{
WhateverYouWantTheStringToBeSetTo.text = getAnswer.Answer;
}
然后,这将从另一个控制器获取字符串,并允许您在此控制器中使用它
希望这有帮助:)我试过你的方法,但似乎不起作用。。我已经用我的代码编辑了这篇文章。哦,我明白你想做什么了。虽然很多都没什么意义。因此,最终答案进入的变量是ans1
?ans1是根据答案.h创建的对象。。在answer.h中有一个名为text的UItextfield..ans1.text.text=ans'。。正在将UItextfield的文本设置为ans(这是最终答案!)xD这就是我试图做的。。但由于某种原因,它不会奏效。。在果壳里,这就是我要做的。。在view1中输入数字在不同的文件中进行计算。当按下按钮时,在不同的视图中显示答案!啊,我知道你在做什么了,所以计算是在一个完全不同的班级里进行的?你为什么要那样做?只需在同一个类中进行,获得答案,然后将答案转移到另一个视图。这将更为理想。这不是一种计算。。我做这件事是为了测试。。我的计划是在另一个类中创建一个接口,并使用该接口进行计算。目前正在进行3种不同的计算。。在所有这些过程中,很少有变量会不断重复。制作一个接口,然后使用它,而不是在一个大类中完成所有工作,这难道不是最好的做法吗?除息的
#import "calculate.h"
#import "answer.h"
#import "test2ViewController.h"
@implementation calculate
@synthesize number1,number2,ans;
-(void)calc{
int i = number1 + number2;
answer *ans1 = [[answer alloc]init];
ans = [NSString stringWithFormat:@"%d",i];
ans1.text.text = ans;
}
@end
@interface calc : UIViewController {
NSString *answer;
}
@property (nonatomic, retain) NSString *answer;
@end
@implementation calc
@synthesize answer;
//do all the work to get the answer, once you have it do this
[answer retain];
//load your new view controller
#import "calc.h"
@interface secondController : UIViewController {
calc *getAnswer;
}
@property (nonatomic, retain) calc *getAnswer;
@end
@implementation secondController
@synthesize getAnswer;
-(void)viewDidLoad{
WhateverYouWantTheStringToBeSetTo.text = getAnswer.Answer;
}