我试过一次,但我想我解释得不够清楚。我是个新手,所以请原谅我不懂行话。
我试图通过模式段将数据从UItextlabel的文本传递到第二个视图控制器,后者将其内容计算为两个答案。哦,应该提一下,这是一个基于故事板的!
它看起来像这样:
(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读取,并在每次触发按钮Calculate时执行。
然后转到第二个视图
- (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
发布于 2014-01-10 23:05:33
尝试如下所示:
确保在故事板中为您的segue指定一个名称。
在您的第一个视图控制器中:
-(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中:使用您在第二个viewControler.h文件中设置的属性。
https://stackoverflow.com/questions/17395757
复制相似问题