【问题标题】:present modal view controller calls view will appear twice?目前的模态视图控制器调用视图会出现两次?
【发布时间】:2012-07-02 06:00:17
【问题描述】:

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

-(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 应用程序。请帮帮我,我被困在这里了。

【问题讨论】:

    标签: iphone xml-parsing presentmodalviewcontroller instagram


    【解决方案1】:

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

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

    用我的替换你的代码:

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

    【讨论】:

    • 我已经使用了你的代码,但仍然被 viewWillAppear 调用了两次,让我检查 iOS 5.0 是否存在崩溃问题。
    • 在 iOS 5.0 中无法正常工作在此页面中出现错误 main.m #import <UIKit/UIKit.h> int main(int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retVal; } 这是错误并将其指向 int ratVal 一侧。
    • 抱歉,它仍然无法正常工作,请指导我,我使用RXCustomTabBar创建了自定义标签栏控件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多