像UIAlertView的UIWindow

时间:2015-01-12 21:55:11

标签: ios uialertview uiwindow

我想制作某种自定义警报视图 - 基本相同的功能但外观不同。据我所知,UIAlertView正在一个单独的窗口中显示。我可以创建一个窗口,将视图放入其中并显示它,但是如果没有对UIWindow对象的强引用,它会在函数返回后消失。另一方面,可能没有对UIAlertView的强烈引用,但它在显示后不会消失。如何为警报窗口实现相同的行为?

// create a new window
UIWindow *alertWindow = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
alertWindow.windowLevel = UIWindowLevelAlert;

UIToolbar *background = [[UIToolbar alloc] initWithFrame:alertWindow.frame];
background.barStyle = UIBarStyleBlack;
background.translucent = YES;
[alertWindow addSubview:background];

[alertWindow addSubview:contentView];    
[alertWindow makeKeyAndVisible];

2 个答案:

答案 0 :(得分:0)

你能真正看到这个alertWindow吗?因为我无法在屏幕上显示它,除非我在当前的ViewController上同时调用[self.view addSubview:alertWindow];

第二件事: 如果您需要与UIAlertView相同的功能,则只需将其子类化。

第三件事: 如果您需要更多可自定义的UIAlertView,那么我将使用自定义UIView并自定义它。您可以使用委托或任何您喜欢的NSNotificationCenter在任何UIViewController上显示此警报。

答案 1 :(得分:0)

  

我可以创建一个窗口,将视图放入其中并显示它,但是如果没有对UIWindow对象的强引用,它会在函数返回后消失。

您或多或少地回答了自己的问题。确保有一个强大的窗口参考。

UIAlertView的内部结构相当复杂,但是有一个单例可以保留警报和它将显示的窗口。每个警报创建的调用都是单身,所以你也可以这样做。