这是主视图文件(用户输入数字的视图)
#import <UIKit/UIKit.h>
@interface test2ViewController : UIViewController {
IBOutlet UITextField *num1; //input number 1
IBOutlet UITextField *num2; // input number2
}
@property (nonatomic,retain) UITextField *num1;
@property(nonatomic, retain)UITextField *num2;
-(IBAction)calculate:(id)sender; //the calculate button
-(IBAction)exit:(id)sender;
@end
答案显示在用户点击计算按钮时显示的不同视图中。下面是代码!
#import "test2ViewController.h"
#import "answer.h"
#import "calculate.h"
@implementation test2ViewController
@synthesize num1,num2;
-(IBAction)calculate:(id)sender{
calculate *testclass = [[calculate alloc]init];
answer *view = [[answer alloc]initWithNibName:nil bundle:nil];
[self presentModalViewController:view animated:YES];
int i = [[num1 text] intValue];
testclass.number1 = i;
int j = [[num2 text] intValue];
testclass.number2 = j;
[testclass calc];
}
“。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
“。m”文件
#import "answer.h"
#import "test2ViewController.h"
#import "calculate.h"
@implementation answer
@synthesize text;
-(IBAction)back:(id)sender{
test2ViewController *view = [[test2ViewController alloc]initWithNibName:nil bundle:nil];
[self presentModalViewController:view animated:YES];
}
下一个是进行计算的目标c类文件。它有一个执行计算的函数,这里是“.h”和“.m”文件 “.H”
#import <Foundation/Foundation.h>
@interface calculate : NSObject {
int number1;
int number2;
NSString *ans;
}
@property int number1;
@property int number2;
@property (nonatomic , retain) NSString *ans;
-(void)calc;
@end
“米”
#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
因此您可以看到上面的函数计算答案..将其输入字符串并将其设置为文本字段。但是文本字段没有显示任何内容。所以这里的问题是我无法访问文本字段,即使我从中创建了一个对象....
答案 0 :(得分:0)
问题是您的“ans”UIViewController
尚未加载。
执行此操作的最常用方法是向UIViewController
“ans”a @property
提供结果。然后在“ans”viewDidLoad
方法中,将文本字段设置为适当的值。
答案 1 :(得分:0)
我对你想要完成的事情感到有点困惑,你想在另一个类中使用NSString或文本UITextField吗?如果是这种情况,请给出要显示@property
的任何内容的字符串,然后设置您想要的字符串值,然后导入calc.h
(#import "calc.h"
)第二个类,然后在界面中创建此calc *getString;
为其创建@property
,@synthesize
它。然后从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
然后转到你的.m
@implementation secondController
@synthesize getAnswer;
-(void)viewDidLoad{
WhateverYouWantTheStringToBeSetTo.text = getAnswer.Answer;
}
然后应该从另一个控制器中获取字符串并允许你在这个中使用它..
希望这有帮助:)