iOS - 未调用警报视图中的 segue

Posted

技术标签:

【中文标题】iOS - 未调用警报视图中的 segue【英文标题】:iOS - segue from alert view is not being called 【发布时间】:2014-05-13 16:56:14 【问题描述】:

当我按下 AlertView 上的“手动输入”和“扫描标签”按钮时,我想要执行一个 segue。

@implementation triageViewController
- (IBAction)addNew:(id)sender 

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Add A New Entry"
                                                message:@"Choose a way to add a new entry."
                                               delegate:nil
                                      cancelButtonTitle:@"Cancel"
                                      otherButtonTitles:@"Manual Entry", @"Scan Tag", nil];
  [alert show];

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
  if (buttonIndex != alertView.firstOtherButtonIndex) 
    [self performSegueWithIdentifier:@"manual" sender: self];

  if (buttonIndex != alertView.cancelButtonIndex) 
    [self performSegueWithIdentifier:@"scan" sender: self];
  

(我意识到这可能会使取消按钮现在成为一个 segue,但我更关心使其工作)

我的故事板中有两个 segue,从一个 UITabViewController 到两个不同的 UIViewController。这些都没有被调用,所以当我点击它们时。我尝试同时使用 push 和 modal segues,但都没有工作。

我也尝试过这样的 if/else 语句:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
if (buttonIndex == 0) 
    [self performSegueWithIdentifier:@"manual" sender: self];


if (buttonIndex == 1) 
    [self performSegueWithIdentifier:@"scan" sender: self];


但这也不起作用。

有人可以帮我找出问题所在吗?再次,如果我不清楚,我想从位于 UITabBarController 上的 UIAlertView 弹出窗口到两个单独的 UIViewControllers 执行 segue。 谢谢

【问题讨论】:

什么不完全有效?您的代码是否通过了if 测试? 在 clickedButtonAtIndex 中放置断点并调试它会发生什么?它会绕过 if 语句吗?还是它调用performSegue? segue 的命名是否正确,它们是否直接连接到 TriageViewController?想要发布故事板那部分的照片吗? 大家好,segue 不起作用。我意识到我只是忘记将代表设置为self,正如@Miron 所回答的那样。谢谢 【参考方案1】:

看起来你的UIAlertView 有一个delegatenil,所以你的函数永远不会被调用。将其设置为self,然后在您的视图控制器的标题中确保您正在实现UIAlertViewDelegate 协议。

【讨论】:

该死,不知道为什么我没有注意到这一点,谢谢你让我头疼。

以上是关于iOS - 未调用警报视图中的 segue的主要内容,如果未能解决你的问题,请参考以下文章

警报视图中的文本字段未在 iOS 7 上显示 [关闭]

ios 7 中未显示社交视图的默认警报

准备(用于 segue:UIStoryboardSegue,发件人:任何?)在 iOS 11 上的 Xcode 9 b6 中未调用

如何在 Swift 中使用警报视图解除 segue?

iOS9如何调用NSObject类中的UIAlertviewController?

关闭自定义警报视图并解除 segue 问题?