2013-03-19 2 views
0

Я хочу создать страницу просмотра загрузки, чтобы поставить поверх всех видов на экране. Я использую следующий код, чтобы получить вид на RootViewController в:Найти вид сверху в iOS

UIApplication.sharedApplication.keyWindow.rootViewController.view 

Я создаю мою страницу просмотра и добавить его в качестве подвида с точкой зрения RootViewController в. Моя проблема в том, когда я это сделаю, если rootViewController изменится, моя страница загрузки пойдет за новым видом viewController. Например, я вызываю функцию showLoading при отправке HTTP-запроса. Когда ответ возвращается, он меняет viewController, и загрузка идет за ним. Есть ли способ поставить мою загрузку сверху независимо от того, что происходит в фоновом режиме?

ответ

3

Вы можете создать как можно больше UIWindows. Если вы действительно хотите убедиться, что вид будет всегда быть сверху, то лучше всего создать второй UIWindow и добавить его в свою иерархию. Тогда независимо от того, что произойдет в другом UIWindow, ваш индикатор загрузки останется на вершине.

Пример

UIWindow *secondWindow = [[UIWindow alloc] initWithFrame:[[[UIApplication sharedApplication] keyWindow] frame]]; 
[secondWindow setWindowLevel:UIWindowLevelStatusBar]; 
[secondWindow makeKeyAndVisible]; 

UIViewController *aNewViewController = [[UIViewController alloc] initWithFrame:secondWindow.bounds]; 
[secondWindow setRootViewController:aNewViewController]; 
+0

То отличная идея. Но как я могу добавить UIWindow в иерархию? – AliBZ

+0

см. Http://stackoverflow.com/questions/8232398/advantages-problems-examples-of-adding-another-uiwindow-to-an-ios-app –

+0

Просто создайте один и makeKeyAndVisible –

Смежные вопросы