我想制作某种自定义警报视图 - 基本相同的功能但外观不同。据我所知,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];
答案 0 :(得分:0)
你能真正看到这个alertWindow吗?因为我无法在屏幕上显示它,除非我在当前的ViewController上同时调用[self.view addSubview:alertWindow];
。
第二件事:
如果您需要与UIAlertView
相同的功能,则只需将其子类化。
第三件事:
如果您需要更多可自定义的UIAlertView
,那么我将使用自定义UIView
并自定义它。您可以使用委托或任何您喜欢的NSNotificationCenter在任何UIViewController上显示此警报。
答案 1 :(得分:0)
我可以创建一个窗口,将视图放入其中并显示它,但是如果没有对UIWindow对象的强引用,它会在函数返回后消失。
您或多或少地回答了自己的问题。确保有一个强大的窗口参考。
UIAlertView
的内部结构相当复杂,但是有一个单例可以保留警报和它将显示的窗口。每个警报创建的调用都是单身,所以你也可以这样做。