縦向きと横向きの両方のモードで左ペインを非表示にする iPad SplitViewController アプリケーションがあります。アプリケーションが特定の通知を受信したときに、左ペインをポップオーバーに表示する必要があります。さまざまな提案されたソリューションを試してみましたが、これを達成する方法を見つけるのに苦労しています。
次のコードを含む 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];
//}
}
詳細ビュー コントローラ自体にも同様のメソッドが存在します。
通知を受信したときに呼び出しているメソッドは次のとおりです。
- (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 を見つけることができないようです。
たぶん、私はこれについて完全に間違った方法で進んでいます。