Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 多视图应用程序。无法更改文本字段值_Iphone_Objective C - Fatal编程技术网

Iphone 多视图应用程序。无法更改文本字段值

Iphone 多视图应用程序。无法更改文本字段值,iphone,objective-c,Iphone,Objective C,嘿,伙计们,我正在制作一个有两个视图的应用程序。第一个视图是用户输入数字的位置,以及他们点击计算按钮的时间。。它会将他们带到一个新的视图,在该视图中,答案显示在文本字段上。计算由另一个文件处理。“calc.h”和“calc.m” 这是主视图文件(用户输入数字的视图) 显示答案的视图的“.h”文件 #import <UIKit/UIKit.h> @interface answer : UIViewController { IBOutlet UITextField *tex

嘿,伙计们,我正在制作一个有两个视图的应用程序。第一个视图是用户输入数字的位置,以及他们点击计算按钮的时间。。它会将他们带到一个新的视图,在该视图中,答案显示在文本字段上。计算由另一个文件处理。“calc.h”和“calc.m”

这是主视图文件(用户输入数字的视图)

显示答案的视图的“.h”文件

#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;

}