我想在我的应用中创建第二个开始屏幕。
我的想法是使用default.png
并在UIView
内加载全屏UIImageView
。
在viewDidLoad
我考虑过放置一个睡眠选项,然后加载真正的应用程序屏幕。
但是当我在viewDidLoad
中调用我的函数时,没有任何反应。
好像我的超级视图是空的...... 这是一段代码:
if (self._pdfview == nil)
{
pdfview *videc = [[pdfview alloc]
initWithNibName:@"pdfview" bundle:nil];
self._pdfview = videc;
[pdfview release];
}
// get the view that's currently showing
UIView *currentView = self.view;
// get the the underlying UIWindow, or the view containing the current view
UIView *theWindow = [currentView superview];
此行后 theWindow
为空,这可能是未加载其他视图的原因。
所以我的问题是,如何创建第二个起始屏幕?
或者三个起始屏幕,比如我想提及另一家公司的游戏。
答案 0 :(得分:0)
如果我理解正确,那么你的观点是,当你的某个控制器的viewDidLoad
执行上述函数时,theWindow
为零,所以你的新视图(启动屏幕)不会被添加到它。< / p>
一些观察结果:
如果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];
并且,请在“addSubview”后移动release
语句,否则视图将立即被释放。