UISplitViewController弹出窗口是空白的

时间:2012-02-01 16:36:34

标签: iphone uipopovercontroller ipad

我使用UISplitViewController和UITabbarController作为主视图和导航控制器作为详细视图。主视图上的每个选项卡都包含一个导航控制器。选择主视图上的任何选项卡后,将在详细视图导航控制器上按下视图。

recentsviewController = [[RecentsViewController_ipad alloc]initWithNibName:@"RootViewController" bundle:nil];
recentsNav = [[UINavigationController alloc] initWithRootViewController:recentsviewController]; 

//similarly rootNav and favNav

NSArray* controllers = [NSArray arrayWithObjects:recentsNav,self.rootNav,favNav,nil];  
self.tabbarController.viewControllers = controllers;

detailViewController=[[LoginViewController_ipad alloc]init];
detailNav=[[UINavigationController alloc]initWithRootViewController:detailViewController];

splitViewController =[[UISplitViewController alloc]init];
splitViewController.viewControllers=[NSArray arrayWithObjects:self.tabbarController,self.detailNav,nil];
    splitViewController.delegate = self.detailViewController;

[self.window addSubview:splitViewController.view];
[self.window makeKeyAndVisible];

这似乎工作正常。当应用程序进入纵向模式时,导航栏中会添加“浏览”按钮。单击此按钮可显示隐藏的视图以及完全正常的选项卡。我可以在选项卡之间切换,并处理弹出窗口中显示的视图。当弹出区域以外的其他区域时,弹出窗口将按预期被解除。

两件不起作用的事情是

  1. 每次应用切换到纵向模式时,popover必须自行显示,而无需用户选择添加到导航栏的按钮
  2. 在某些情况下,我需要以编程方式解除弹出窗口。
  3. 我试过了foll代码:

    - (void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {
    barButtonItem.title = @"Browse";
    [[self navigationItem] setLeftBarButtonItem:barButtonItem];
    self.appDelegate.rootPopoverButtonItem = barButtonItem;
    self.appDelegate.splitViewPopover = pc;
    [self.appDelegate.splitViewPopover presentPopoverFromBarButtonItem:self.appDelegate.rootPopoverButtonItem permittedArrowDirections:UIPopoverArrowDirectionUp animated:NO];
    }
    

    每次方向改变时,都会添加黑色半透明弹出窗口。如何显示浏览按钮单击时显示的内容? 通常的dismissPopvoerAnimated似乎在这里不起作用。

    感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

使用performSelector:withObject:afterDelay:修复了问题