*

StoryboardからPopoverを作っても位置合わせコードは必要

公開日: : 最終更新日:2016/04/25 Tips , , ,

これだけだとわかりづらいんですが。
XcodeのStoryboardから、Segueを”Present As Popover”で設定すると、ボタンを押すとかの操作だけでそのボタンからPopoverを表示するようなギミックをコードなしで作ることができます。

このPopoverの矢印の位置がボタン等、アクションを設定したコンポーネントの左上になるのでちょっと見栄えが良くない、ということで結局コードを書く必要に駆られたのでメモ。StackOverFlowでは未回答だったり、「全部コードで書け」とか残念気味な回答しか見当たらなかった・・・

記述するのは、prepareForSegueの部分で、ここでsourceRect、sourceView等のpopoverに必要な設定をしてやることで対応します。
以下の様なコードで、hogehogeButtonをタップすると、hogehogeButtonの中央から矢印が出るpopoverを作ることができます。
(segueの名前)とか、hogehogeViewController、hogehogeButtonなどの部分は表示先のViewControllerやボタン、segueの名前にお消えてやればいいわけです。

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"(segueの名前)"]) {
        hogehogeViewController* vc = (hogehogeViewController*)(segue.destinationViewController);
        vc.popoverPresentationController.sourceRect = self.hogehogeButton.bounds;
        vc.popoverPresentationController.sourceView = self.hogehogeButton;
    }
}

関連記事

iOS7でのPopover内サイズの指定

UIPopover内で表示する場合のViewControllerのコンテンツサイズ設定に関してのメモ

記事を読む

plistファイルに色を入れる

plistファイル中にUIColorを入れたい!という場合。普通RGBAの値を数値で入れるとかするけ

記事を読む

GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法

情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初のシート)をCSVとしてエクス

記事を読む

iOS6時代のアプリのiOS7への対応

やや古い情報になるが、iOS7対応に関して自分がやったことの覚え書き。いろんな所から拾って来た情

記事を読む

”No Scheme”になってしまった場合の対応

知人がXcodeで突然「No Scheme」表示になってRunするターゲットとデバイスが選択できない

記事を読む

bitbucketをXcode5で使用する

bitbucketは無償で5人までの少人数チーム用のクローズド(非公開)リポジトリを作成できるため、

記事を読む

アプリ内で自動スリープの設定を無効化する

「設定」アプリ内で設定したスリープ時間設定を無効にするためのコード。 アプリがバックグラウンドにな

記事を読む

UIButtonのLocalizeに関するTips

Storyboardに設置したUIButtonのタイトルのLocalizeをしてたのですが、英語では

記事を読む

Xcode10からのimage literal / color literalの指定方法

アセットにあるUIImageの直接指定が可能なImage literalですが、気がついたらアセット

記事を読む

UISplitViewControllerの仕切り線の色を設定

UISplitViewControllerで、iPadを横向き(Landscape)にしたときの2つ

記事を読む

Xcode10からのimage literal / color literalの指定方法

アセットにあるUIImageの直接指定が可能なImage litera

Xcode11でのバージョン番号の取得方法

Xcode11になってバージョン番号をスクリプトから得て自動で更新する

GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法

情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初

画面回転をしたあとに、UITextViewの先頭を表示する

回転によりサイズが可変するUITextViewで、縦向き(ポートレイト

NXDrawKitを導入してみる

ACEDrawingViewがObj-Cで書かれていて、いまいちメンテ

→もっと見る

    PAGE TOP ↑