Possible Duplicate:
How to Dismiss a Storyboard PopoveriOS:ポップオーバーを解散する方法
私はiPadのストーリーボードを持っています。あるビューのBar Button Itemは別のビューにControlドラッグされ、Popoverスタイルが選択されます。私は、新しいポップオーバービューがポップオーバーに示されているボタンを押すと、私は二つの問題がある場合:私は、もう一度ボタンを押すと
- 、ポップオーバービューの別のインスタンスが表示されます - 私が見ることができる、ということ黒い境界が暗くなり、暗くなります。ポップオーバービューが開いていて、ボタンを押すと、ポップオーバービューは消えるはずです。どうやってやるの?
- 現在、新しいポップオーバービューは、ビュー内のコンテンツがその高さではなくても、画面のボタンにフローティングしています。ポップオーバービューのサイズを制御するにはどうすればよいですか?
EDIT1:
Iは、ポップオーバーの内部でなければならない他のビュー、コントローラの底部の黄色コントローラアイコンからドラッグしてセグエを作成しました。このポップオーバーの識別子はsettingsPopoverです。
私はその後、IBAction内の次の操作を行います。
- (IBAction)settingsButtonTapped:(id)sender {
[self performSegueWithIdentifier:@"settingsPopover" sender:self];
}
しかし、これは私に、このエラーを与える:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'UIStoryboardPopoverSegue must be presented from a bar button item or a view.'
は、私は悪い方法でまたはperformSegueWithIdentifier
間違っへの呼び出しでセグエを作成したことがありますか?
EDIT2:
私はこのIBActionを作成しました:
- (IBAction)settingsButtonTapped:(id)sender {
if (_settingsPopover == nil) {
SettingsViewController* settingsView = [[SettingsViewController alloc] initWithStyle:UITableViewStylePlain];
self.settingsPopover = [[UIPopoverController alloc] initWithContentViewController:settingsView];
}
[self.settingsPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
それはほとんど動作しますが、欠点の一つは、それが私のストーリーボードで設計のUIViewを使用していないことです。例えば、私のストーリーボードでは、グループ化されたテーブルビューとして設計されたSettingsViewControllerクラスを持つビューです。生のSettingsViewControllerインスタンスの代わりに、ストーリーボードにデザインされたUIViewをPopover内に表示する方法はありますか?
ソリューション:
私は、識別子 "settingsPopover" とストーリーボードのグローバルセグエを作成しました。
- (IBAction)settingsButtonTapped:(id)sender {
if (self.settingsPopover==nil) {
[self performSegueWithIdentifier:@"settingsPopover" sender:sender];
}
}
#pragma mark - UIView
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"settingsPopover"]) {
self.settingsPopover = [(UIStoryboardPopoverSegue *)segue popoverController];
self.settingsPopover.delegate = self;
}
}
#pragma mark - UIPopoverControllerDelegate
- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController {
self.settingsPopover = nil;
}
送信者を変更しましたが、同じ例外が発生します。 – dhrm
私の間違い。 Popover seguesは、このように提示されるときにアンカーポイントも必要とします。インターフェイスビルダと属性インスペクタでセグを選択し、アンカーフィールドからバーボタンアイテムに接続をドラッグします。この[screenshot](http://cl.ly/Cv2O)を参照してください。 –