1

在登录用户可以在标签栏控制器中看到其个人资料页面后,我在该视图中创建了一个登录和注册视图,我已经这样编码

-(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 控制器。所以问题是,当用户成功登录标签栏控制器的第一个视图时,它的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应用程序。请帮助我,我被困在这里。

4

1 回答 1

0

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

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

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

  self.tabBarController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
  [[[UIApplication sharedApplication] keyWindow] setRootViewController:self.tabBarController];  
  [self presentModalViewController:self.tabBarController animated:YES];
  self.tabBarController.selectedIndex = 0;
于 2012-07-02T06:13:24.570 回答