Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/122.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 UIAlertView类似于UIWindow_Ios_Uialertview_Uiwindow - Fatal编程技术网

Ios UIAlertView类似于UIWindow

Ios UIAlertView类似于UIWindow,ios,uialertview,uiwindow,Ios,Uialertview,Uiwindow,我想做一些自定义警报视图-基本上功能相同,但外观不同。据我所知,UIAlertView显示在一个单独的窗口中。我可以创建一个窗口,在其中放入一个视图并显示它,但是如果没有对UIWindow对象的强引用,它会在函数返回后立即消失。另一方面,可能没有对UIAlertView的强引用,但它在显示后不会消失。如何实现警报窗口的相同行为 // create a new window UIWindow *alertWindow = [[UIWindow alloc] initWithFrame:[UIScr

我想做一些自定义警报视图-基本上功能相同,但外观不同。据我所知,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];

你真的能看到这个窗口吗?因为我无法在屏幕上看到它,除非我同时调用
[self.view addSubview:alertWindow]

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

第三件事: 如果您需要更多可定制的
UIAlertView
,我会选择定制
UIView
并对其进行定制。您可以使用代理或NSNotificationCenter(如果愿意)在任何UIViewController上显示此警报

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

你或多或少地回答了自己的问题。确保有对窗口的强烈引用

UIAlertView
的内部结构相当复杂,但是有一个单独的组件,它同时保存警报和它将在其中显示的窗口。创建的每个警报都会调用该单例,因此您也可以执行类似的操作