0

在此处输入图像描述

我使用 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;
    }
}
4

3 回答 3

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。

于 2013-05-09T13:22:03.140 回答
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]
}
于 2013-05-09T14:00:09.243 回答
0

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

我认为你正在做的代码是这样的:

//AlertView分配[警报显示]; 执行转场

如果这就是你正在做的事情,那么你做错了。

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

于 2013-05-09T13:24:43.817 回答