UInavigationcontroller全局警报消息(如WhatsApp传入消息)

时间:2013-07-11 17:20:22

标签: ios objective-c ios6 uinavigationcontroller alert

正在建立一个应用程序(论坛),我有一个UINavigationController。我想在用户使用的任何UIViewController中显示警告消息。我真的不知道应该怎么做。

很多你的帮助。

这里有一些我想做的例子: 这是样本screenshot

2 个答案:

答案 0 :(得分:1)

您可以将此视图添加到keyWindow,并将其显示在前面。 或者您可以将alertView设置为UIWindow,通过这种方式,您可以在任何地方显示它。

static UIWindow *_sharedNavigationBarAlertView = nil;
+ (UIWindow *)sharedNavigationBarAlertView
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        _sharedNavigationBarAlertView = [[UIWindow alloc] initWithFrame:CGRectZero];
        _sharedNavigationBarAlertView.windowLevel = UIWindowLevelStatusBar + 1.0;
        _sharedNavigationBarAlertView.hidden = YES;
        // add other views...
    });
    return _sharedNavigationBarAlertView;
}

+ (void)showWithInformation:(id)info
{
    // [self sharedNavigationBarAlertView].imageView.image = ...;
    // [self sharedNavigationBarAlertView].titleLabel.text = @"";
    // [self sharedNavigationBarAlertView].detailLabel.text = @"";
    CGRect frame = [UIScreen mainScreen].bounds;
    frame.size.height = 44.0;
    [self sharedNavigationBarAlertView].frame = frame;
    [self sharedNavigationBarAlertView].hidden = NO;
}
+ (void)hide
{
    [self sharedNavigationBarAlertView].hidden = YES;
}

// To release the shared alert window, just set it to nil

答案 1 :(得分:0)

UINavigationBarUIView的子类,因此您可以向其添加子视图。您可以通过任何视图控制器上的navigationController属性或从保留UINavigationController的任何位置访问它。只需添加您的通知子视图,并在延迟后将其删除。