Segue / uncaught异常错误

时间:2013-12-12 06:49:33

标签: ios uistoryboardsegue

我正在尝试使用两个基本屏幕(主要和设置)创建一个应用程序。我使用导航控制器和segues从主要设置转换到设置,我将segue从设置(屏幕2)回到主要部分。这一切都很棒!

我想添加一个包含单元格中列出的帮助主题的表格,但我无法获取帮助按钮来选择正确的segue。我一直收到一个未被捕获的异常错误,因为程序正在尝试执行他准备segue操作并将数据发送回主屏幕。我很困惑如何解决这个问题。我使用导航控制器和segues代替按钮等更高效,似乎更麻烦!

#import "SignalViewController.h"
#import "SetUpViewController.h"

@interface SignalViewController ()

@end

@implementation SignalViewController

-(IBAction)unwindToSignalView:(UIStoryboardSegue *)segue
{

    float minSlider = sensorMin;    //Get Slider range values
    float maxSlider = sensorMax;
    sensorValueSlider.minimumValue = minSlider;         //Set Slider Range
    sensorValueSlider.maximumValue = maxSlider;


    NSString* sensorMinD = [NSString localizedStringWithFormat:@"%.1f",sensorMin];//save default values next 9 lines
    NSString* sensorMaxD = [NSString localizedStringWithFormat:@"%.1f",sensorMax];
    NSString* signalMinD = [NSString localizedStringWithFormat:@"%.1f",signalMin];
    NSString* signalMaxD = [NSString localizedStringWithFormat:@"%.1f",signalMax];

    [labelY1 setText:sensorMinD];//set labels to match settings page next 3 lines
    [labelY3 setText:sensorMaxD];
    [labelX1 setText:signalMinD];
    [labelX3 setText:signalMaxD];

    //NSLog(@"signalMin: %f ", signalMin);
    //NSLog(@"signalMax: %f ", signalMax);
    //NSLog(@"sensorMin: %f ", sensorMin);
    //NSLog(@"sensroMax: %f ", sensorMax);

}


#import "SignalViewController.h"
#import "SetUpViewController.h"

@interface SetUpViewController ()


@end

@implementation SetUpViewController

@synthesize sensorMinY1;
@synthesize sensorMaxY3;
@synthesize signalMinX1;
@synthesize signalMaxX3;
@synthesize sensLabel;
@synthesize sigLabel;
//@synthesize buttonHelpSetUp;



-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    self.view.backgroundColor = [UIColor blueColor];
    SignalViewController *passValue = [segue destinationViewController];
    ***passValue.sensorMin = [[sensorMinY1 text] floatValue];//sensorMinY1;***
    passValue.sensorMax = [[sensorMaxY3 text] floatValue];//sensorMaxY3;
    passValue.signalMin = [[signalMinX1 text] floatValue];//signalMinX1;
    passValue.signalMax = [[signalMaxX3 text] floatValue];//signalMaxX3;
    [passValue.labelSigUnits setText:sigLabel.text];
    [passValue.labelSensUnits setText:sensLabel.text];

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    [defaults setValue:signalMinX1.text forKey:@"X1"];
    [defaults setValue:signalMaxX3.text forKey:@"X3"];
    [defaults setValue:sensorMinY1.text forKey:@"Y1"];
    [defaults setValue:sensorMaxY3.text forKey:@"Y3"];

}

这是有效的代码设置。我只添加了表视图控制器,然后将其嵌入到导航控制器中。然后我按住Ctrl键从帮助按钮(工具栏项目)拖动到新的导航控制器,并创建了一个自动segue,就像我之前所做的那样,我得到了错误,它正挂在上面的asterix中的行上。

1 个答案:

答案 0 :(得分:0)

从视图控制器出来的每个segue都会调用

prepareForSegue。如果您有多个segue,则必须为它们提供所有标识符,然后检查prepareForSegue中的标识符并在那里执行正确的操作。

目前您假设任何 segue的目标控制器是SignalViewController。