我在故事板中连接了一个push segue然后我正在使用这样的prepareForSegue
方法:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"start"] && self.name.textField.text == nil)
{
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Test"
message:@"Test
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[message show];
}
}
我想要做的是,如果“if”为真,则弹出一个警告框并预先形成segue,但我只想显示警告框,我不想预先形成segue。我该如何解决这个问题?
答案 0 :(得分:3)
prepareForSegue:sender:
。你不能在那时取消它。
如果你想取消一个segue,你应该重写的方法是shouldPerformSegueWithIdentifier:sender:
。
答案 1 :(得分:1)
我认为您需要在此处重新评估您的逻辑并从prepareForSegue
使用UIAlertDelegate
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
if([title isEqualToString:@"OK"]) {
[self performSegueWithIdentifier:@"My Segue" sender:self];
return;
} // else do not perform segue
}
答案 2 :(得分:0)
我认为你现在不能停下来。
但你可以使用
来自iOS 6的- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
。
答案 3 :(得分:0)
尝试给你的segue一个不同的名字,如果警报没有显示,只调用那个segue(例如“[self performSegueWithIdentifier: @"MyRealStartSegue" sender: sender]
”)。
当然,这意味着您需要检查“prepareForSegue
”方法 之外的这些条件。当按下某个按钮时,也许是IBAction?