故事板:用于导航的条件转换(推送)

时间:2013-05-21 09:43:56

标签: iphone ios objective-c

我是故事板和xcode的新手(使用4.6) 我使用导航故事板与push segue。 我想实现一个选择的快照视图,如果选择了最小1个快照 - segue将起作用。否则,用户应保持相同的视图。

我创建了2个UIView:SelectSnapsViewController和ShippingDetailViewController。

在SelectSnapsViewController.m中,我添加了以下内容:

- (IBAction)nextButtonPressed:(id)sender
{
    looseDataAlert = NO;
    [okkkBtn setFrame:CGRectMake(116, 272, 72, 37)];
    if ([appDelegate.selImageDetails count] == 0)
    {
        label1.text = @"To proceed you need to add snaps.";
        [self openAlertView];
    }
    else{
        [self performSegueWithIdentifier:@"MySegue" sender:self];
    }
}

当我调试代码时 - 我发现它始终属于其他情况,但是segue(转换到新视图)仍然会发生。

如何阻止用户转移到新视图?

2 个答案:

答案 0 :(得分:3)

有两种方法可以实现条件segues。

1)从ViewController将Segues配置为'manual',并在您的IBAction方法中有条件地调用performSegueWithIdentifier,您可以连接到按钮的事件处理。

或2)从你的按钮将Segue配置为'Triggered Segue'并在视图控制器中实现- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender以执行条件逻辑。

答案 1 :(得分:1)

你是说你只想在条件成立的情况下执行segue吗?

如果是这样,不是直接从控件或表格单元创建segue,而是创建无触发segue。无触发segue以视图控制器为源,并且不会自动触发。相反,您可以随时以编程方式触发它,包括来自IBAction。

要创建无触发segue,请从场景底部的场景底座中的包含视图控制器图标开始控制+拖动segue。像往常一样拖动到目标场景,然后选择segue类型。选择segue,然后在检查器中选择segue标识符。

在运行时,当你想执行segue时,调用 - [UIViewController performSegueWithIdentifier:sender:]。您可以传递任何您想要发送者的对象,包括nil。如果发件人对您没用,请传递nil。

所以,总结一下:

Create a triggerless segue from the view controller to the destination scene
Set an identifier for the segue in the inspector
At runtime, and form code, call -[UIViewController performSegueWithIdentifier:sender:] when you want to trigger the segue.