StoryboardからPopoverを作っても位置合わせコードは必要
公開日:
:
最終更新日:2016/04/25
Tips InterfaceBuilder, iPad, Segue, UIPopover
これだけだとわかりづらいんですが。
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;
}
}
関連記事
-
-
ソースコードからStoryboardにアクセスする
複数のStoryboardを利用して、自分以外のStoryboardに遷移させるような展開をしたい場
-
-
画面回転をしたあとに、UITextViewの先頭を表示する
回転によりサイズが可変するUITextViewで、縦向き(ポートレイト)から横向き(ランドスケープ)
-
-
RealmのList
とArray の相互変換によるマップ Realm+ObjectMapperを使って、RealmのオブジェクトをJSON変換してたのですが
-
-
UIButtonのタイトル変更時のチラつき抑制
久しぶりにXcode+Objective-Cでアプリを作っていたら、UIButtonのタイトルを動的
-
-
コードでiPhone6 Plusを識別する簡単な方法
表題の通り、コードでiPhone6 Plusを識別する簡単な方法です。 iPhone6 Plu
-
-
iPad用storyboard⇔iPhone用Storyboardへの変換
iPad用アプリとしてiPad用前提のstoryboardから、iPhone対応にするにあたり、si
-
-
Bitbucketの画面の日本語化/コミット時に同時プッシュを行う
前回の記事の続きで、Bitbucketの画面の日本語化と、Xcodeでコミットするときに同時にpus
-
-
バージョンアップ版があることを通知する
拍子抜けするほど簡単だったので、「アプリのバージョンアップの通知をどうするか」という話についてTip
-
-
CALayerの管理
CALayerはNSKeyValueCodingを実装している(Core Animation Ext
-
-
UICollectionViewのヘッダとフッタの設定
UICollectionViewで慣れないのがヘッダフッタで、毎度「どうやって設定するんだっけ…」と
