ipad第二次启动屏幕

时间:2011-07-27 08:35:12

标签: iphone xcode ipad

我想在我的应用中创建第二个开始屏幕。 我的想法是使用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为空,这可能是未加载其他视图的原因。

所以我的问题是,如何创建第二个起始屏幕?

或者三个起始屏幕,比如我想提及另一家公司的游戏。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么你的观点是,当你的某个控制器的viewDidLoad执行上述函数时,theWindow为零,所以你的新视图(启动屏幕)不会被添加到它。< / p>

一些观察结果:

  1. 如果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];
    }
    
  2. 如果您想获得应用的UIWindow(这似乎就是您要做的事情),您可以这样做:

    [UIApplication sharedApplication].keyWindow;
    
  3. 从那里你可以设置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语句,否则视图将立即被释放。