Segue数据传输

时间:2013-06-30 23:23:52

标签: uistoryboardsegue data-transfer

我试过一次,但我想我没有说清楚自己。我是新手,请原谅我缺乏语言。

我试图将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

1 个答案:

答案 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文件中设置的属性。