【问题标题】:Show alert view and stay on same view controller when cancel is pushed推送取消时显示警报视图并保持在同一视图控制器上
【发布时间】:2013-06-13 13:14:42
【问题描述】:

我正在使用带有 2 个视图控制器的情节提要,这些控制器通过 segue 相互连接。在第一个视图控制器上有一个按钮,如果单击该按钮,它将转到第二个视图控制器。问题是我想弹出一个警报视图,我试图在- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 方法中显示警报视图,但问题是它转到第二个视图控制器然后弹出警报视图。我希望它在第一个视图控制器上弹出,如果您从警报视图中按下取消按钮,它仍然停留在第一个视图控制器上。知道我该怎么做吗?

【问题讨论】:

    标签: iphone ios objective-c xcode storyboard


    【解决方案1】:

    您需要在点击按钮时显示警报并充当警报的代表。只有当您收到警报完成委托回调 (alertView:willDismissWithButtonIndex:) 时,您才能决定是应该触发 segue 还是什么都不做。

    【讨论】:

      【解决方案2】:

      为此,您需要执行以下操作:

      • 从故事板上的按钮中删除转场。
      • 为该按钮实现IBAction 并在此处显示警报
      • 使用UIAlertViewclickedButtonAtIndex 委托方法检查按下的按钮。如果用户按确定转到下一个视图

      添加IBAction 喜欢:

      - (IBAction)showAlert:(id)sender
      {
         UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Can I Move ?"
                                                        message:nil
                                                       delegate:self
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:@"Cancel",nil];
         [message show];
      }
      

      并像这样实现委托方法:

      - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
      {
          NSString *title = [alertView buttonTitleAtIndex:buttonIndex];
          if([title isEqualToString:@"OK"])
          {
              [self.navigationController pushViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"Other View"] animated:YES];
          }
      }
      

      注意:您也可以使用performSegueWithIdentifier 移动到下一个视图

      【讨论】:

      • 在用户按下“OK”之后,如何将下一个视图控制器与按钮连接起来?
      • 这似乎有效,但如果我按下“确定”,警报视图就会关闭而不是转到下一个视图...我用 Storyboard ID 更改了 ViewControllerWithIdentifier
      • 另一个视图的故事板 ID。还要检查 if 条件是否正在执行。
      • 我从需要加载的视图控制器中获取了storyboard ID
      • @Shinonuma:检查 if 条件是否有效。在 if 条件中放置断点或 NSLog
      猜你喜欢
      • 2020-04-24
      • 1970-01-01
      • 2014-03-28
      • 2011-07-27
      • 2020-10-02
      • 1970-01-01
      • 2019-10-18
      • 1970-01-01
      • 2014-09-09
      相关资源
      最近更新 更多