Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MBProgressHUD-2条连续消息重叠_Ios_Objective C_Mbprogresshud - Fatal编程技术网

Ios MBProgressHUD-2条连续消息重叠

Ios MBProgressHUD-2条连续消息重叠,ios,objective-c,mbprogresshud,Ios,Objective C,Mbprogresshud,我试图在屏幕上一个接一个地显示2MbprogressHUD消息。我发现第二条消息与第一条消息重叠,而不是连续出现。这就是我想做的: 我有一个注销按钮,点击它会触发这个并调用“saveCartNotification” “saveCartNotification”以5秒的延迟发布MBProgressHUD,然后调用“userLogOut” } userLogOut现在发布另一条MBProgressHUD消息,延迟5秒: - (void)userLogOut{ self.hud = [[MB

我试图在屏幕上一个接一个地显示2MbprogressHUD消息。我发现第二条消息与第一条消息重叠,而不是连续出现。这就是我想做的:

我有一个注销按钮,点击它会触发这个并调用“saveCartNotification”

“saveCartNotification”以5秒的延迟发布MBProgressHUD,然后调用“userLogOut”

}

userLogOut现在发布另一条MBProgressHUD消息,延迟5秒:

- (void)userLogOut{
    self.hud = [[MBProgressHUD alloc] initWithView:self.view];
    self.hud.labelText = @"Logging out securely";
    self.hud.mode = MBProgressHUDModeIndeterminate;
    self.hud.dimBackground = YES;
    self.hud.animationType = MBProgressHUDAnimationFade;
    [self.view addSubview:self.hud];
    [self.hud show:YES];
    [self.hud hide:YES afterDelay:5];
}
由于我连续调用这些方法,因此我的预期行为是:

1) 来自“saveCartNotification”的MBProgressHUD消息 2) 上述信息持续5秒钟后消失 3) 来自“userLogOut”的MBProgressHUD消息 4) 上述信息再次持续5秒钟并消失

但实际情况是,这两条消息似乎与“userLogOut”中的MBProgressHUD消息同时出现在屏幕上,与“saveCartNotification”中的MBProgressHUD消息重叠

你能告诉我我遗漏了什么,我需要做什么才能一个接一个地连续收到我的信息

非常感谢你的帮助

谢谢,
Mike

通过这个呼叫您的用户注销

[self performSelector:@selector(userLogOut) withObject:nil afterDelay:5];
您必须这样做,因为您为MBProgressHUD提供了特定的隐藏时间


希望这对您有所帮助,祝您编码愉快。

请通过这一点呼叫您的用户注销

[self performSelector:@selector(userLogOut) withObject:nil afterDelay:5];
您必须这样做,因为您为MBProgressHUD提供了特定的隐藏时间


希望这有帮助,快乐编码。

创建两个独立的
mbprogrreshud
实例,或者将注销呼叫更改为

[self performSelector:@selector(userLogOut) withObject:nil afterDelay:5];

由于您使用相同的
MBProgressHUD
实例顺序调用两个方法,因此第一个警报会立即被
userLogout
方法覆盖。

创建两个单独的
MBProgressHUD
实例或将注销调用更改为

[self performSelector:@selector(userLogOut) withObject:nil afterDelay:5];

由于您正在顺序调用两个方法&使用相同的
MBProgressHUD
实例,因此第一个警报会立即被
userLogout
方法覆盖。

问题是您希望消息连续显示相当长的时间(用计算机术语)当这些HUD所代表的两个过程一个接一个地快速发生时

您的
saveCartNotification
方法准备用于显示所需文本的HUD的单个实例。然后,紧接着触发
userLogOut
方法,该方法将HUD替换为自己的消息

因此,我现在可以想到两种可能性:

  • 由于节省的速度非常快,您完全可以在这一步中去掉HUD。如果您愿意,您可能希望以某种方式调整注销显示的文本,以通知用户已保存的购物车
  • 只有当第一个HUD消失时,才触发注销。在
    MBProgressHUD
    上有一个方法称为
    -(void)showAnimated:(BOOL)animated,同时执行block:(dispatch_block_t)block completionBlock:(mbprogresshudcletionblock)completion
    。在第一个块中,您执行保存操作,因为它在后台线程上运行,所以可以在其内部使用一些基于
    NSThread sleepForTimeInterval:
    的延迟将消息保留在屏幕上一段时间。然后在完成块中触发注销。这样可以有效地序列化调用,使两个HUD在屏幕上保留一段时间

  • 然而,这取决于你的应用程序中使用该流的频率,对于经验丰富的用户来说,等待第一条消息消失可能会让他们感到恼火。我想,你可能会做得很好,不是每封邮件延迟5秒,而是2秒

    问题在于,当这些HUD所代表的两个过程一个接一个地快速发生时,您希望消息连续显示相当长的时间(用计算机术语)

    您的
    saveCartNotification
    方法准备用于显示所需文本的HUD的单个实例。然后,紧接着触发
    userLogOut
    方法,该方法将HUD替换为自己的消息

    因此,我现在可以想到两种可能性:

  • 由于节省的速度非常快,您完全可以在这一步中去掉HUD。如果您愿意,您可能希望以某种方式调整注销显示的文本,以通知用户已保存的购物车
  • 只有当第一个HUD消失时,才触发注销。在
    MBProgressHUD
    上有一个方法称为
    -(void)showAnimated:(BOOL)animated,同时执行block:(dispatch_block_t)block completionBlock:(mbprogresshudcletionblock)completion
    。在第一个块中,您执行保存操作,因为它在后台线程上运行,所以可以在其内部使用一些基于
    NSThread sleepForTimeInterval:
    的延迟将消息保留在屏幕上一段时间。然后在完成块中触发注销。这样可以有效地序列化调用,使两个HUD在屏幕上保留一段时间

  • 然而,这取决于你的应用程序中使用该流的频率,对于经验丰富的用户来说,等待第一条消息消失可能会让他们感到恼火。我想,你可能会做得很好,不是每封邮件延迟5秒,而是2秒

    我认为您需要单独的
    MBProgressHUD
    实例,我认为您需要单独的
    MBProgressHUD
    +1实例作为备选建议。“通知(警报)的5秒钟太长了。”丹尼尔·施内勒-工作得很有魅力。谢谢你的建议+1.其他建议。“通知(警报)的5秒钟太长了。”丹尼尔·施内勒-工作得很有魅力。谢谢你的建议!