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;
}
}
関連記事
-
-
UITableViewのセルセパレータが画像の下部分だけ切れる場合の対応
iOS7のUItableViewCellだと、UITableView.imageViewに画
-
-
”No Scheme”になってしまった場合の対応
知人がXcodeで突然「No Scheme」表示になってRunするターゲットとデバイスが選択できない
-
-
UITableViewCellのロングタップ
UITableViewCellをロングタップしたときに、タップされたセルを認識しつつメニューを出した
-
-
iPad用storyboard⇔iPhone用Storyboardへの変換
iPad用アプリとしてiPad用前提のstoryboardから、iPhone対応にするにあたり、si
-
-
Size ClassとUIViewController.view
タイトルの件でちょっとハマったことがある上に、特に日本語情報もStackOverflowからも情報が
-
-
CoreDataのソートとsectionNameKeyPathの関係
CoreDataをフェッチするときに、indexPathのsectionにできるsectionNam
-
-
AVAudioPlayerの初回再生遅延
ちょっとした効果音の再生にAVAudioPlayerを使っているのですが、どうも初回の効果音ロードの
-
-
ENMLからHTMLへの変換
最近EvernoteAPIをいじっているので、コレに関するノウハウをとりあえず断片的に引っかかったと
-
-
HTMLParserを修正する
HTMLスクレイピングしてる時に役立つライブラリであるObjective-C-HMTL-Parser
-
-
iOS7でカメラ撮影時のステータスバーを消す
UIImagePickerControllerをカメラモードで表示するとステータスバーがカメラの一番
