0

我正在使用带有情节提要设置的MBRProgressHUD

我提出了一个处理登录的登录视图控制器。收到用户后,我会呈现另一个视图控制器,如下所示:

self.slidingViewController.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"HomeVC"];

在我的登录方法中,我使用以下内容创建了我的 HUD:

// Start the HUD outside the user login block
self.HUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
self.HUD.dimBackground = NO;
self.HUD.labelText = NSLocalizedString(@"HUDLoggingInText", @"Login HUD Logging in text");

这一切都很好,我遇到的问题是关闭视图控制器。在使用故事板之前,我可以添加以下内容:

// Bring down the HUD with a success message
self.HUD.customView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"37x-Checkmark.png"]];
self.HUD.mode = MBProgressHUDModeCustomView;
self.HUD.labelText = NSLocalizedString(@"HUDLoggedInText", @"HUD Logged in text");
[self.HUD hide:YES afterDelay:2];

这将关闭带有成功复选标记和不同文本的 HUD。我现在遇到的问题是,当使用登录视图控制器(以及它所在的导航控制器)上方的第一行代码加载 HomeVC 时,我认为这意味着 HUD 也丢失了。

我怎样才能让HUD显示之前的成功instantiateViewControllerWithIdentifier?我已经尝试在加载 HomeVC 之前明显移动 HUD 部分,但这没有区别,也没有将延迟更改为 0。

编辑 视图已加载。故事板加载的第一个视图是类 InitialViewController。然后,这会根据用户是否登录来实例化另一个控制器:

    self.topViewController = [storyboard instantiateViewControllerWithIdentifier:@"WelcomeVC"];
} else {
    NSLog(@"logged in");
    self.topViewController = [storyboard instantiateViewControllerWithIdentifier:@"HomeVC"];

初始视图控制器始终保留在堆栈上,并且是一个 ECSlidingViewController,因此它具有 topViewController 的属性。

理想情况下,我需要知道如何将 HUD 添加到堆栈上的这个 initialViewController,而不是当前显示的视图(登录视图控制器),因为当登录完成并且新的视图控制器instantiateViewControllerWithIdentifier再次加载了“”时,它会被释放。

4

1 回答 1

0

HUD 不应丢失。如果持有引用的控制器被释放,您只会丢失对它的引用。

解决方案:只需将 HUD 的引用传递给您的主视图控制器。或者之前创建主视图控制器(不显示它)并在那里执行所有 HUD 逻辑。

要传递参考:

self.topViewController.hud = hud;
于 2013-04-16T21:16:52.910 回答