【问题标题】:MBProgressHud with storyboards带有故事板的 MBProgressHud
【发布时间】:2013-08-14 06:19:14
【问题描述】:

以下代码来自示例演示。

HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
    [self.navigationController.view addSubview:HUD];

HUD.delegate = self;
HUD.labelText = @"Loading";

[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];

它使用 .xibs 作为它的视图。我正在创建一个使用情节提要的应用程序。因此实例化HUD时initWithView方法没有navigationController。有没有办法在不使用 .xibs 和 navigationController 的情况下实现 HUD。我试过同时传递“self”和“self.view”,但它们不起作用。它所在的类是 ViewController.m 类,它是一个 UIViewController 类。所以我不明白为什么传递 self 不起作用。

这是我的代码

HUD = [[MBProgressHUD alloc] initWithView:self.view];
    [self.view addSubview:HUD];

“self”再次是我的主要 ViewController

谢谢!

【问题讨论】:

    标签: objective-c ios6 mbprogresshud


    【解决方案1】:

    这就是我认为你想要的:

    MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:view];
    [view addSubview:hud];    
    [hud showWhileExecuting:@selector(YOUR_TASK) onTarget:YOUR_TARGET withObject:nil animated:YES];  // or NO if you don't want it to be animated
    

    或者,如果您想自己手动管理 HUD 的显示和显示,有一些很好的便捷方法可以做到这一点:

    // To add HUD to a view
    MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:view animated:YES];  // or NO if you don't want it to be animated
    
    // To set HUD text
    [hud setLabelText:@"Text"];
    
    // To remove HUD from a view (such as later in the code, after load, etc)
    [MBProgressHUD hideHUDForView:view animated:YES];
    

    view 是您希望从其中添加/删除 HUD 的视图。

    self.view 在视图控制器上。

    【讨论】:

    • 您的第二个实现按预期工作。第一个给我@selector 部分的错误。但是,我只使用 .xibs 而不是情节提要尝试了这两种方法。我稍后会尝试使用它们。您的第一个实现与我上面的代码完全相同,尽管我将“hud”对象传递给 addSubview 而不是“view”。如果我错了,请纠正我,但我认为你打错了。
    • 是的,应该是[view addSubview:hud]。关于选择器位,您需要将YOUR_TASK(无论您的方法名称是什么)和YOUR_TARGET(可能是self)更改为适当的值。
    • 我的任务和目标的参数分别是我的方法和“自我”。我认为错误可能是方法中阻塞了主线程。我将离开几天,但现在请投票。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2018-02-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多