我使用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;
}
}
答案 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。