Ios SplitViewController模板是否手动显示popover?

Ios SplitViewController模板是否手动显示popover?,ios,ipad,uisplitviewcontroller,uipopovercontroller,show,Ios,Ipad,Uisplitviewcontroller,Uipopovercontroller,Show,我使用的是苹果提供的splitViewController模板。对于特定操作,我想显示rootViewController。不幸的是,我找不到一个方法可以像点击bar按钮项时那样(以编程方式)显示popover 有什么想法吗?谢谢 您可以通过以下两种方法从barButtonItem或使用您自己的rect显示Popor: [self.popoverController presentPopoverFromRect:(CGRect) inView:(UIView *) permittedArrowD

我使用的是苹果提供的splitViewController模板。对于特定操作,我想显示
rootViewController
。不幸的是,我找不到一个方法可以像点击bar按钮项时那样(以编程方式)显示popover


有什么想法吗?谢谢

您可以通过以下两种方法从
barButtonItem
或使用您自己的rect显示Popor:

[self.popoverController presentPopoverFromRect:(CGRect) inView:(UIView *) permittedArrowDirections:(UIPopoverArrowDirection) animated:(BOOL)];
[self.popoverController presentPopoverFromBarButtonItem:(UIBarButtonItem *) permittedArrowDirections:(UIPopoverArrowDirection) animated:(BOOL)]
self.popoovercontroller
是我的案例中存储popover的ivar。我每次都在以下位置设置此变量:

- splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
并在其对应方法中将其设置回
nil

- splitViewController:willShowViewController:invalidatingBarButtonItem:
这是我的密码:

- (void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {
    barButtonItem.title = @"42";
    self.navigationController.navigationBar.topItem.leftBarButtonItem = barButtonItem;
    self.popoverController = pc;
}

- (void)splitViewController: (UISplitViewController*)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {
    self.navigationController.navigationBar.topItem.leftBarButtonItem = nil;
    self.popoverController = nil;
}

然后使用
presentPopoverFromBarButtonItem:
方法。您必须转发bar按钮(您还必须将其保存在变量中或浏览视图元素以找到您的需要)。在这种情况下,箭头的方向是向上的。[这不是一个自定义视图,而是它将从中弹出的矩形。这里它将是您的工具栏按钮的矩形]好的,我确实输入了ViewDidAspect方法;显示了弹出窗口,但未加载我的tableView中的数据。我想这是因为该方法是在加载数据之前调用的?我相信您迟早会得到它的。如果没有,就用你的新问题再问一个问题。您可以
NSLog()
检查您的
rootViewController
是否加载了它。这对我在视图中的工作很好出现:
[self.popoverController presentPopoverFromBarButtonItem:[[self.toolbar items]objectAtIndex:0]许可的RowDirections:UIPopOverErrorDirectionUp动画:YES]获取数据并在准备就绪时调用委托,然后重新加载表视图。(一秒钟后调用reloaddata会更难看一点,这更多是为了调试目的,而不是为了发布软件)。如果你还有问题,我再次建议你提出一个新问题。把问题分成小的和平行动比大的和平行动要好。也许一个角色会帮助其他人;)