gpt4 book ai didi

ios - iPad SplitViewController 以编程方式显示 Popover

转载 作者:可可西里 更新时间:2023-11-01 05:57:08 25 4
gpt4 key购买 nike

我有一个 iPad SplitViewController 应用程序,我在其中隐藏了纵向和横向模式的左 Pane 。当应用程序收到某个通知时,我需要在其弹出窗口中显示左 Pane 。尽管尝试了许多不同的建议解决方案,但我仍在努力寻找实现这一目标的方法。

我正在使用包含以下代码的 MultipleMasterDetailManager 实现:

/* forward the message to the current detail view
* all detail views must implement UISplitViewControllerDelegate
*/
-(void)splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc
{
self.masterBarButtonItem = barButtonItem;
self.masterPopoverController = pc;

barButtonItem.title = NSLocalizedString(@"Show Sidebar", @"Show Sidebar");

[self.currentDetailController.navigationItem setLeftBarButtonItem:self.masterBarButtonItem animated:YES];
}

/* forward the message to the current detail view
* all detail views must implement UISplitViewControllerDelegate
*/
-(void)splitViewController:(UISplitViewController *)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
//if (![self.currentDetailController isKindOfClass:[SyncSourceDetailViewController class]])
//{
self.masterBarButtonItem = nil;
self.masterPopoverController = nil;

[self.currentDetailController.navigationItem setLeftBarButtonItem:nil animated:YES];
//}
}

详细 View Controller 本身也存在类似的方法。

收到通知时调用的方法如下:

- (void)navigateToLatest 
{
[self navigateToDocumentsTab];
[[self dataLoader] navigateToLatest]; // populates data for the left table view
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UIView *view = [[[[[splitViewController viewControllers] objectAtIndex:1] viewControllers] objectAtIndex:0] view];

[self.masterDetailManager.masterPopoverController presentPopoverFromRect:CGRectMake(0, 0, 100, 100) inView:view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

这是行不通的。我也尝试过使用 presentPopoverFromBarButtonItem 方法,但我似乎无法在代码中找到 leftBarButtonItem。

也许我的做法完全错误。

最佳答案

我最终通过在 navigateToLatest 方法中将我的应用程序委托(delegate)中的“showSidebar”变量设置为 true 来解决这个问题。然后在我的 DetailViewController 的 ViewDidAppear 事件中我检查这个变量的值,如果它是真的那么我使用下面的代码显示侧边栏:

UIPopoverController *masterPopoverController= [[theAppDelegate masterDetailManager] masterPopoverController];
[masterPopoverController presentPopoverFromBarButtonItem:[self.navigationItem leftBarButtonItem] permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[theAppDelegate setShowSidebar:NO];

关于ios - iPad SplitViewController 以编程方式显示 Popover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11856651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com