Если я правильно понимаю, ваша точка зрения такова, что когда ваша функция выполняется выше с viewDidLoad
какого-либо контроллера, theWindow
равен нулю, поэтому ваш новый вид (начальный экран) не добавляется к нему.
Несколько наблюдений:
, если theWindow
равно нулю, то self.view
является верхним UIView;вы можете попробовать заменить его или просто добавить к нему свое представление:
UIView *currentView = self.view;
// get the the underlying UIWindow, or the view containing the current view
UIView *theWindow = [currentView superview];
UIView *newView = _pdfview.view;
if (theWindow) {
[currentView removeFromSuperview];
[theWindow addSubview:newView];
} else {
self.view = newView; //-- or: [self.view addSubview:newView];
}
, если вы хотите получить UIWindow своего приложения (что, похоже, вы пытаетесь сделать), вы можете сделать:
[UIApplication sharedApplication].keyWindow;
и оттуда вы можете установить rootViewController
(из iOS 4.0)
[UIApplication sharedApplication].keyWindow.rootViewController = ...;
или добавить newView какподвопрос к нему:
[[UIApplication sharedApplication].keyWindow addSubview:newView];
во втором случае, возможно, вам следует удалить все subviews
, ранее добавленные к UIWindow
.(Выполните итерацию по keyWindow.subviews и вызовите removeFromSuperview
).
СТАРЫЙ ОТВЕТ:
Я думаю, что вы должны попытаться добавить свой pdfview
в качестве подпредставления к текущему представлению:
[currentView addSubview:videc];
или на то, что вы называете theWindow
:
[theWindow addSubview:pvidec];
и, пожалуйста, переместите оператор release
после `addSubview, иначе представление будетнемедленно освободиться.