【问题标题】:Storyboard - auto return to previous screen on condition情节提要 - 在条件下自动返回上一个屏幕
【发布时间】:2012-01-18 20:39:51
【问题描述】:

我正在使用 Storyboard 并尝试在满足特定条件时返回到上一个屏幕。 IE,登录时找不到用户名。

基本上,用户输入他们的信息并按下按钮。如果信息不正确或找不到,我会显示一条 UIAlertView 消息以通知他们不正确的信息。由于事情完成的顺序,屏幕转换发生在我与服务器检查任何数据之前按下按钮。所以我不能在检查之前停止屏幕切换。

我正在检查用户在 UIAlertView 中按下的按钮是否有信号通过此方法返回 ..

 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
   [self.navigationController popViewControllerAnimated:YES];

}

我正在尝试使用该方法中的一行返回到上一个屏幕,但没有任何反应。我假设故事板的工作方式不同,但我不知道使用它们返回上一个屏幕的语法。

谢谢。

【问题讨论】:

  • 这并不能真正回答您的问题,但最好返回登录屏幕并显示非模态消息,让用户知道发生了什么。 UIAlertView 应该非常谨慎地使用,非模态的用户体验更好。
  • 这很好。但是我如何自动弹回第一个屏幕呢?这里的问题不是我试图在 UIAlertView 中这样做。除非用户在下一个屏幕上按下“返回”按钮,否则我根本无法自动返回第一个屏幕。

标签: iphone objective-c xcode4.2 uistoryboard


【解决方案1】:

如果您的故事板推送视图控制器,那么您始终可以通过编程方式弹出它。这不是问题。这里的问题是 UIAlertView 使用动画显示,因此您不能一次执行另一个动画。

  1. 所以你有两个选择。弹出没有动画的视图控制器应该可以,但用户可能没有意识到他要去哪里。

  2. 您可以将弹出视图控制器的调用放入辅助方法中,并像这样调用此方法:[self performSelector:@selector(myPopHelperMethod:) withObject:nil afterDelay:0.8f]。这应该会在 0.8 秒后弹出您的视图控制器,这足以让 UIAlertView 完成其动画。

【讨论】:

  • 我将 popViewControllerAnimated: 设置为 NO,但似乎没有任何效果。我也尝试了辅助方法。我仍在调用 [self.navigationController popViewControllerAnimated:YES];在 myPopHelperMethod 中对吗?如果是这样,它也不会做任何事情。当用户按下按钮直到我说要停止时,是否可以停止视图更改?我不知道如何通过故事板更改屏幕时以编程方式设置。我只知道如何通过故事板视图中的 ctrl+click 拖动来简单地连接它们。
  • 当您尝试弹出视图控制器时,您确定 self.navigationController 不为零吗?
  • 在进一步调查中,故事板似乎默认情况下根本不使用导航控制器。它们必须被添加进去,这显然是为什么它会为空。但这会让我觉得一开始就没有必要做我想做的事。
  • @JesseDurham 我认为这并不完全正确。每个 View Controller 都有 navigationController 属性,但这并不意味着必须设置它。一般来说,如果你想要一个UINavigationController,你必须创建它并添加一个rootViewController。在情节提要中,您可以在情节提要中单击所需的UIViewController,然后从菜单中选择以下内容:Editor > Embed in > Navigation Controller
  • 没错。我稍微修改了一下,添加了一个导航控制器并将根视图设置为我的初始登录屏幕。它似乎没有任何影响,我仍然无法使用该语法自动返回第一个屏幕。
【解决方案2】:

我猜你的 self.navigationController 是 nil,这使你的方法成为空操作。

【讨论】:

  • 在进一步调查中,故事板似乎默认情况下根本不使用导航控制器。必须添加它们,这显然是为什么它会为空。但这会让我觉得一开始就没有必要做我想做的事。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-25
  • 2021-05-27
  • 1970-01-01
  • 2011-10-24
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多