iPadが縦向きの場合にのみセルが選択されているときにマスタービューコントローラーを非表示にしたい。したがって、ユーザーがセルをクリックすると、マスタービューコントローラーが消えます(メールの場合のように)。どこでどのようにこれを行うのですか?
このプロジェクトはオープンソースです:https ://github.com/kirkouimet/enzyme
iPadが縦向きの場合にのみセルが選択されているときにマスタービューコントローラーを非表示にしたい。したがって、ユーザーがセルをクリックすると、マスタービューコントローラーが消えます(メールの場合のように)。どこでどのようにこれを行うのですか?
このプロジェクトはオープンソースです:https ://github.com/kirkouimet/enzyme
詳細ビューコントローラを設定したら、ポップオーバーコントローラを閉じる必要があります。
if (self.popoverController) {
[self.popoverController dismissPopoverAnimated:YES];
}
詳細ビューコントローラにを保持するプロパティがまだない場合はUIPopoverController
、次のデリゲートメソッドを実装することでキャプチャできます。UISplitViewControllerDelegate
- (void)splitViewController:(UISplitViewController *)iSplitViewController
willHideViewController:(UIViewController *)iViewController
withBarButtonItem:(UIBarButtonItem *)iBarButtonItem
forPopoverController:(UIPopoverController *)iPopoverController {
self.popoverController = iPopoverController;
}
- (void)splitViewController:(UISplitViewController *)iSplitViewController
willShowViewController:(UIViewController *)iViewController
invalidatingBarButtonItem:(UIBarButtonItem *)iBarButtonItem {
self.popoverController = nil;
}
詳細ビューで通知を受け取るために登録を取得します。
1)詳細ビューで通知用の登録を取得します。
- (void) viewDidLoad
{
//for showing loginview
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(dismissPop) name:@"MASTERROWSELECTED" object:nil];
}
2)didSelectRowAtIndexPathのマスタービューでこれを行います。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//do normal things you usually do
//post notification that row is selected and you need to dismiss popover.
[[NSNotificationCenter defaultCenter] postNotificationName:@"MASTERROWSELECTED"
object:nil];
}
3)このメソッドを詳細ビューに記述します。
- (void)dismissPop
{
if(self.interfaceOrientation == UIInterfaceOrientationPortrait)
{
//self.popover is your reference to master view pop
if([self.popover isPopoverVisible])
{
[self.popover dismissPopoverAnimated:YES];
}
}
}
これは、MattGemmellのMGSplitViewControllerなどのカスタムSplitViewControllerを使用して実現できます。特に、この実装では、toggleMasterView:
から呼び出すことができるメソッドをコントローラーに追加しますdidSelectRowAtIndexPath:
。