目前的模态视图控制器调用视图会出现两次?

时间:2012-07-02 06:00:18

标签: iphone xml-parsing presentmodalviewcontroller instagram

我已在该视图中创建了一个登录和注册视图,登录后用户可以在tabbar控制器中查看其配置文件页面,我已经编码了

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if(nil != qName)
    {
        elementName = qName;
    }

    if ([elementName isEqualToString:@"ABC"]) 
    {
        //some code
    }
    else if ([elementName isEqualToString:@"DEF"])
    {
         //some code
    }
    else if ([elementName isEqualToString:@"GHI"])
    {
        //some code
    }
    else if ([elementName isEqualToString:@"JKL"])
    {
        //some code
    }
    else if ([elementName isEqualToString:@"end"])
    {
        [activityIndicator stopAnimating];

        self.tabBarController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
        [self presentModalViewController:self.tabBarController animated:YES];
        [self.tabBarController release];
    }
}

所以在成功之后我调用了一个tabbarcontroller,它在xib文件中定义为tabbar controller。问题是,当用户成功登录tabbar控制器的第一个视图时,它的viewWillAppear方法被调用了两次,我可以在控制台中看到错误,如Using two-stage rotation animation is not supported when rotating more than one view controller or view controllers not the window delegate 我也在注册页面中完成了相同的代码,但它将在iOS 5.0中崩溃,并且它在iOS 4.0中运行。所以我上面的代码中有任何错误我正在实现登录和注册页面方法,如instagrampicyoupinterest应用程序。请帮助我,我被困在这里。

1 个答案:

答案 0 :(得分:0)

原因是您在其预期用途之外使用UITabBarController。它仅用作根控制器,如果需要与tabbar使用工具栏类似的东西。大约半年前,我遇到了确切的问题。不幸的是,如果你这样使用它,你也会遇到其他问题。

因为UITabBarController类继承自UIViewController类,所以选项卡栏控制器具有可通过view属性访问的自己的视图。部署选项卡栏界面时,必须将此视图安装为窗口的根目录。与其他视图控制器不同,标签栏界面永远不应该作为另一个视图控制器的子项安装。

用我的代码替换你的代码:

  self.tabBarController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
  [[[UIApplication sharedApplication] keyWindow] setRootViewController:self.tabBarController];  
  [self presentModalViewController:self.tabBarController animated:YES];
  self.tabBarController.selectedIndex = 0;