我试过一次,但我想我没有说清楚自己。我是新手,请原谅我缺乏语言。
我试图将UItextlabel文本中的数据通过模态segue传递给第二个视图控制器,后者将其内容计算为两个答案。哦,应该提到它是基于故事板的一个!
它看起来像这样:
(FirstView控制器)
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
NSLog(@"prepareForSegue: %@", segue.identifier);
if
([segue.destinationViewController isKindOfClass:[SampleDelayCalculator2ViewController class]])
{
D = d1.text;
TT = T1.text;
FQ = Fq1.text;
NSLog(@"Transfering Data");
//sending information to new view controller with a segue
SampleDelayCalculator2ViewController *viewcontrollerB = (SampleDelayCalculator2ViewController*)segue.destinationViewController;
viewcontrollerB.d.text=self.D;
viewcontrollerB.T.text=self.TT;
viewcontrollerB.Fq.text=self.FQ;
}
return;
}
直接从UITextLabels读取,并在每次触发按钮计算时执行。
然后进入第二个视图
- (void)viewDidLoad
{
[self calculate];
[super viewDidLoad];
}
-(void) calculate{
//asigning the values from prepare for segue method to floats
NSLog(@"Value of string is %@", T.text);
Tf = ([T.text floatValue]);
Fqf = ([Fq.text floatValue]);
df = ([d.text floatValue]);
NSLog(@"Value of string is %f", Tf);
...
然后它继续发展。 我的主要问题是每当打印T.text或Tf时,它会显示nill或0.00000,我显然没有放入UITextLabel。我怎么解决这个问题?
我试图在ViewDidAppear中实现计算但是没有改变任何东西。
我希望自己明确表示:D
答案 0 :(得分:0)
尝试这样的事情:
请务必在故事板中为您的segue命名。
在你的第一个viewcontroller中:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier]isEqualToString:@"segueToHomeDetails"]) {
SampleDelayCalculator2ViewController *viewcontrollerB = (SampleDelayCalculator2ViewController*)segue.destinationViewController;
viewcontrollerB.d = d1.text; // don't use viewcontrollerB.d.text it won't set the text in the next controller
viewcontrollerB.T = T1.text;
viewcontrollerB.Fq = Fq1.text;
}
}
在你的第二个viewcontroller中: 使用您在第二个viewcontroller.h文件中设置的属性。