12

根据 XML 返回,我不希望当前segue在 UIButton 触摸上执行。

我知道我可以选择segue我想表演的,但是我怎么做一个segue 表演?或者至少不执行任何可用的segues

4

3 回答 3

25

如果您的部署目标是 iOS 6.0 或更高版本,如果您想要执行 segue 或者不执行,您可以覆盖要返回-[UIViewController shouldPerformSegueWithIdentifier:sender:]方法YESNO

如果您的部署目标早于 iOS 6.0,您将不会收到该shouldPerformSegueWithIdentifier:sender:消息。所以在你的故事板中,不要从按钮中画出segue。相反,从按钮的视图控制器中绘制 segue 并给 segue 一个标识符。将按钮连接到IBAction其视图控制器中的一个。在动作中,检查是否要执行转场。如果您想执行它,请发送给您自己performSegueWithIdentifier:sender:,将您分配给故事板中 segue 的标识符传递给您。

于 2012-01-24T20:09:43.990 回答
3

Apple Developer Documentation有正确的方法来取消在 StoryBoard 中管理的 segue:

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender

例如:

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
    if ([identifier isEqualToString:@"listPopover"]) {
        if (self.listPopover == nil) {
            // Allow the popover segue
            return YES;
        }
        // Cancel the popover segue
        return NO;
    }
    // Allow all other segues
    return YES;
}
于 2012-12-11T22:32:03.833 回答
0

查看此线程:https ://stackoverflow.com/a/42161944/4791032

你可以检查它func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath)

于 2017-02-10T14:39:08.123 回答