IOS:在完成所有控件之前保持第一个视图控制器(StoryBoard)

时间:2013-05-09 13:17:14

标签: ios storyboard push segue

enter image description here

我使用StoryBoard Push Segue和Interface Builder将第一个视图控制器连接到第二个视图控制器。

按钮在顶部/右侧命名为GO。

我有三个文本字段必须填写才能进入第二个控制器。

当其中一个为空时我会显示警告。

问题是我的代码显示正确的alertView后转到SecondController而不是保留在mainController上。

 if ([segue.identifier isEqualToString:@"DataDisplay"])
{
    if (![self verifySelection]) {
        return;
    } else {
        RowViewController *rowViewController = segue.destinationViewController;
//        rowViewController.delegate = self;
    }
}

3 个答案:

答案 0 :(得分:1)

一个简单的解决方法是手动创建segue,而不是让界面构建器管理它。因此,您可以从主视图控制器按住Ctrl键拖动到第二个控制器,选择push作为segue的类型,并通过标识符检查器为其分配标识符,然后将IBAction连接到Go按钮,并在方法中执行检查在以编程方式触发segue之前的文本字段上:

[self performSegueWithIdentifier:@"whateverIdentifierYouGaveYourSegue" sender:self];

抬头:要创建从视图控制器到另一个视图控制器的手动视图,您需要在故事板中缩小或从视图下方的黄色圆圈中按住Ctrl键拖动!

编辑:连接到按钮方法的IBAction应如下所示:

- (IBAction)download:(id)sender {
    if(text boxes are ok)
        [self performSegueWithIdentifier:@"segueIdentifier" sender:self];
    else
        [self showWarning];
}

确保您已将ID segueIdentifier分配给故事板中创建的segue。

答案 1 :(得分:1)

1)您的segue直接从Go按钮连接到Sensor Data视图控制器。你不想要这个,因为只要有人触及Go,segue就会发生......没有阻止它。因此,第一步是删除您从segue转到第二个视图控制器的Go

2)而是将segue从视图控制器下方的File's Owner图标连接到第二个视图控制器。给它命名为DataDisplay

3)在IBAction

Go button
if ([self verifySelection) {
    [self performSegueWithIdentifier:@"DataDisplay" sender:self]
}

答案 2 :(得分:0)

您的问题是您在显示警报后定义了“performSegueWithIdentifier”。

我认为您正在执行的代码是这样的:

// AlertView分配 [警示显示]; 执行瞄准

如果这是你的表现,那么你做错了。

你必须使用If-Else语句的结构,并在所有文本字段都填满的情况下放置Perform Segue。