我正在使用故事板,在我的故事板中,我得到了一个与另一个视图控制器连接的按钮。因此,当您单击该按钮时,将显示另一个视图控制器。我使用Action Segue连接了它 - 推入故事板。我还将按钮与IBAction属性连接起来。问题是,当我单击按钮时,它首先进入其连接的视图控制器,然后执行IBAction功能。我该如何更改此订单?
答案 0 :(得分:3)
您无法更改该订单。你可以做两件事。
第一:
仅使用segue。
覆盖prepareForSegue:
并将代码放在那里。如果该视图控制器中存在多个segure,则可以在prepareForSegue:
内区分当前正在执行的哪个。为此,您应该为他们提供唯一的名称/ segue ID。
第二:
仅使用IBAction。
在IBAction方法中,在最后,调用performSegueWithIdentifier:sender:
。同样,为此您必须使用唯一的segue ID命名所有segue。
答案 1 :(得分:0)
问自己的问题是,你为什么要同时使用这两个?选择一个并坚持下去IMO。
如果你想在segue发生时执行某些操作,你应该实现
更新以发表评论
我实际上不知道如何在代码中执行此操作,如何在不使用Action Segue Push的情况下加载我的故事板上的ViewController?
我发现的最简单的方法是在你的故事板中,你可以为视图控制器设置一个标识符。
注意故事板ID 设置为MyViewController
现在,在您的IBAction方法中,您可以执行以下操作。
UIViewController *myViewController = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil] instantiateViewControllerWithIdentifier:@"MyViewController"];
[self presentViewController:myViewController animated:YES completion:nil];
答案 2 :(得分:0)
我通过链接来自我的segue的IBAction来解决这个问题。我发现这种方法最有用,因为我可以有一个" save"没有segue的动作(链接到IBAction的按钮,有时很有用),并且还在必要时使用segue解除视图控制器。
-(IBAction)save:(id)sender
{
/* Do some Save stuff */
}
然后在我的prepareForSegue:sender:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"save"])
{
[self save:sender];
}
}
将您的非segue按钮链接到IBAction,并将您的展开或其他此类按钮用标识符"保存"。魔法。