使用两个视图控制器,第二个不显示视图

时间:2014-11-11 22:22:42

标签: ios objective-c cordova

出于某种原因,我在应用程序中显示来自辅助视图控制器的视图时遇到问题 我的主视图控制器调用另一个负责加载pdf视图的视图控制器。

MainViewController中的代码如下所示:

- (int)openPDF
{
    [self loadSettingsWithDefaults];
    RDPDFViewController *m_pdf;
    if( m_pdf == nil )
    {
        m_pdf = [[RDPDFViewController alloc] initWithNibName:@"RDPDFViewController"bundle:nil];
    }
    int result = [m_pdf PDFOpen:@"/Users/steve/test.pdf" withPassword:@""];
    if(result == 1)
    {
        m_pdf.hidesBottomBarWhenPushed = YES;
        [self.navigationController pushViewController:m_pdf animated:YES];
    }
    return result;
}

此代码位于第二个视图中。这是上面MainViewController中提到的方法。

- (int)PDFOpen:(NSString *)path withPassword:(NSString *)pwd {
    [self PDFClose];
    PDF_ERR err = 0;
    m_doc = [[PDFDoc alloc] init]; err = [m_doc open:path :pwd]; switch( err )
    {
        case err_ok: break;
        case err_password: return 2;
            break; default: return 0;
    }
    CGRect rect = [[UIScreen mainScreen]bounds];
    //GEAR
    if (![self isPortrait] && rect.size.width < rect.size.height) { float height = rect.size.height;
        rect.size.height = rect.size.width;
        rect.size.width = height;
    }
    //END
    if(SYS_VERSION>=7.0) {
        m_view = [[PDFView alloc] initWithFrame:CGRectMake(0, 0, rect.size.width, rect.size.height)]; }
    else
    {
        m_view = [[PDFView alloc] initWithFrame:CGRectMake(0, 0, rect.size.width, rect.size.height-20-44)];
    }
    [m_view vOpen :m_doc :(id<PDFViewDelegate>)self];
    pagecount = [m_doc pageCount];
    [self.view addSubview:m_view];
    return 1; }

当代码执行时,我知道正在创建视图对象,因为我可以在控制台中看到来自它的调试输出。但是它不会在iPhone模拟器中显示新视图。

随意提供反馈 - 请记住这是我的第一篇StackOverflow帖子!我很乐意根据需要提供更多信息。

1 个答案:

答案 0 :(得分:0)

我的主视图控制器被设置为我的应用程序的根视图控制器。我必须将导航控制器设置为根视图控制器,然后再添加其他视图控制器。

之后我告诉navController弹出到根视图控制器。

navController = [[UINavigationController alloc] initWithRootViewController:mainViewController];
self.window.rootViewController = navController;
[self.window makeKeyAndVisible];
[navController setNavigationBarHidden:YES];
[navController popToRootViewControllerAnimated:YES];

navController = [[UINavigationController alloc] initWithRootViewController:mainViewController]; self.window.rootViewController = navController; [self.window makeKeyAndVisible]; [navController setNavigationBarHidden:YES]; [navController popToRootViewControllerAnimated:YES];