ObjectiveCを用いてiPhone用アプリの開発の勉強をしています。
画面簡易でNavigationControllerを使っているのですが、そこで不具合のような現象が発生しました。
NavigationControllerをInitialViewControllerに設定、その下にViewControllerをpush接続し、
ViewControllerのNavigationBarにボタンを設置しました。
そのボタンをちょっと動かそうと思いNavigationBarの外に置いたところ、ViewControllerの左下の方に固定されてしまい、動かせなくなりました。
ちなみに、TabBarControllerも使っています。
NavigationControllerと並列で、さらにNavigationControllerを使用しています。
これがバグの原因なのでしょうか?
実行してみると、そのボタンは画面下部のタブに隠れて、見えません。
storyboard左のメニューからそのボタンを選択し、Edit→Deleteをしようと思いましたが、Deleteがグレーになっていて、選択できません。
このような状態になった場合、どうしたら問題を解決できるのでしょうか?
そのボタンを複製し、NavigationBarに再度設置すると、問題なく動きますが、その動かせないボタンは残ったままで、後々のバグの原因になるのでないかと、不安です。
アドバイスお願いします。
No.1ベストアンサー
- 回答日時:
> NavigationControllerをInitialViewControllerに設定、その下にViewControllerをpush接続し、
念のため確認ですが、ここは「ViewControllerをpush接続」ではなく、
「ViewControllerをRelationshipのroot viewとして接続」の誤りだと
思ってよいでしょうか?
NavigationControllerには、少なくともrootViewControllerを設定しないと
機能できないと思うのですが、もしかして、それは別途やっていて、
それに加えてpush接続もあるということなのでしょうか?(だとしたら余計に
意味がわかりません)。
> ちなみに、TabBarControllerも使っています。
これも確認したいのですが、NavigationControllerをInitialViewControllerに
した上で、NavigationController配下にTabBarControllerコントローラーが
配置されているのですか?
そのTabBarControllerはどのViewControllerから呼び出されるのでしょうか?
> NavigationControllerと並列で、さらにNavigationControllerを使用しています。
最初に「NavigationControllerをInitialViewControllerに設定」と書いてあるのに
ここでは、TabBarController配下に並列で複数のNavigationControllerがあるかのように
見えます。InitialViewControllerに設定したものとは別に複数のNavigationController
がTabBarController配下にあるのでしょうか?
それとも最初の説明とは別のものを説明しているのでしょうか?
このあたりの接続状況をもっとちゃんと説明してもらえると何かわかるかも
しれません。
で、結局構成がよくわからないのですが、なんとなくNavigationControllerの
Attributes Inspectorで「Shows Toolbar」が意図せずチェックONになっている
ような気がしました。
ただ、そのボタンを削除しようとしても削除できないというのは理由がよくわかりません。
選択したように見えて選択されてないという話はないのでしょうか?
もし「Shows Toolbar」がONになっていたなら、それをOFFにすればToolBarは
消えるかもしれませんが、そのToolBarに張り付いていたボタンは画面上
見えないところで残っている可能性があります。
その場合でもStoryboardの左側に部品をツリー上に表示している「Document Outline」
には見えているはずなので、そこで部品を選択して削除すればよいと思います。
回答ありがとうございます!
すみません、言葉の認識が甘く、間違っていて分かりづらい書き方になってしまいました。
回答を参考に触っていた所、問題が解決できたました。
まず構成の訂正から
ViewControllerをRelationshipのroot viewとして接続というのが正しかったです。
そしてinitialViewControllerはTabBarControllerでした。
[TabBarController]-[NavigationController]-[ViewController]-[Viewcontroller]-...
という感じで接続されています。
Show Toolbarは確認したところチェックされていませんでした。
症状としては
一度上部のセルに乗せたボタンが固定化され、StoryBoard上で名前の編集はできるものの、移動したり削除したりという事ができない
また、移動できた場合も、ViewControllerの下部に固定化されてしまい、同様の現象が起こる(質問に添付した画像のような状態)
という感じでした。
これはボタンがBarBottonItemという所に勝手に格納?されてしまっていたようです。
Document Outlineからボタンを選択しても削除やカットができなかったのですが、そのBarBottonItemという項目ごとであれば、削除・カットすることが出来ました。
バグがあったりエラーが起こるようなら、コードでボタンを追加すればいいかなと思いましたが、segue移動をコードで書くと見にくくなるなと感じたり
http://dev.classmethod.jp/smartphone/iphone/ios_ …
のようなExitの機能も使いたいと思っていたので助かりました^^
特にバグという事も無かったようなので良かったです。
No.2
- 回答日時:
> これはボタンがBarBottonItemという所に勝手に格納?されてしまっていたようです。
> Document Outlineからボタンを選択しても削除やカットができなかったのですが、そのBarBottonItemという項目ごとであれば、削除・カットすることが出来ました。
ここらへんは、ちょっと認識に誤りがあります。
UIButtonと、UIBarButtonItemは、別のクラスであることを、まず覚えてください。View上に配置するものをUIButton、Navigation Bar、Tool Barに配置するものを、UIBarButtonItemといいます。外見がおなじなので、区別できなかったのも無理ありませんが、Storyboardにおいては、Object Libraryの下のほうにスクロールしていくと、部品として用意されていますので、ご自身の目でおたしかめください。そして今後は、Navigation BarやTool Barには、UIButtonではなく、UIBarButtonItemを配置してください。
話はもうすこし続きます。
しかし、あなたは、Storyboardで、UIButtonをNavigation Barの上にドラッグして、じっさいに配置できました。私のいっていることは違いますね?どういうことでしょう?
UIBarButtonItemのクラスリファレンスを読んでください。プロパティ「customView」が見つかります。このcustomViewを使うと、ボタン以外の、いろんなコントロールが、Navigation Bar、Tool Barに配置できます。たとえば、Navigation BarにUIActivityIndicatorViewを配置して、処理中であることを知らせるのは、よくあるインターフェイスですね。
Storyboardでなく、プログラムでNavigation BarにUIActivityIndicatorViewを直接配置することができません。いったんUIBarButtonItemをNavigation Barに配置してから、UIBarButtonItemのプロパティcustomViewにUIActivityIndicatorViewを代入することで、可能になります。
このようなプログラムのUIの構造を理解すれば、Storyboardの挙動も理解できると思います。ButtonがUIBarButtonItemごとでないと、削除できないのも、納得がいくのではないでしょうか?
すくなくとも、UIBarButtonItemのcustomViewにUIButtonを配置するのは、むだではありますね。
回答ありがとうございます!お礼が遅くなり申し訳ありません。
NavigationBarにはそれ用のボタンがあるのですね。全く知りませんでした;
リファレンスは英語が読めず、あまり理解できません。。。
虎の巻というところを、参考にしています。
しかしcustomViewというのがいまいち検索をしてもそれらしい物がヒットせず、理解できませんでした。
UIActivityIndicatorViewは特にタップ処理の無い物だと思いますが、そういうものでもUIBarButtonItemを使って設置するんですね
本来は
>いったんUIBarButtonItemをNavigation Barに配置してから、UIBarButtonItemのプロパティcustomViewにUIActivityIndicatorViewを代入することで、可能になります。
といった処理をしないといけないのに、それを飛ばしてしまっているからバグのような挙動になってしまうという事でしょうか?
Buttonとして使いたいのであれば、UIBarButtonItemをそのまま使い、
Button以外のコントロールを実装したい場合は、UIBarButtonItemのcustomViewプロパティに何らかの処理を加える事で可能になる。
万が一UIBarButtonItemに出来なくてButtonなら出来る処理(あるのか分かりませんが)があった場合は、UIBarButtonItemのcustomViewにButtonを配置すれば良い
という考えで良いのでしょうか?
NavigationBarにUIActivityIndicatorViewを設置してみようと試してみたのですが
>UIBarButtonItemのプロパティcustomViewにUIActivityIndicatorViewを代入することで、可能になります。
ここら辺の、特にcustomViewプロパティの使い方がわからず、出来ませんでした;
いずれ実装する機会は必ずあるので、customViewの使い方も習得しておきたいですね。
まだ完璧には理解できていませんが、理解度は進みました!
NavigationBar上のボタンを全てBarButtonItemに変えてみましたが、今のところButtonを設置した時のようなおかしい?動きは見られなくなりました^^
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
Excel ラジオボタンのリセット...
-
UPS警告音を止めたい
-
Excelで、ボタンにコメントをつ...
-
マクロで作ったボタンのサイズ...
-
【Excel VBA】マクロボタンを表...
-
EXCELのマクロが 実行時エラー5...
-
Accessのフォームでタブの色
-
VBAでフォームの閉じるボタンを...
-
InputBox関数でキャンセルボタ...
-
YouTube見てるとたまに勝手にSi...
-
エクセルでマクロボタンを押す...
-
VBAでクリアボタンのみ残してシ...
-
入力済み、選択したセルに連動...
-
Access VBAでボタンの背景色を...
-
オブジェクト名をVBAで指定...
-
EXCELの塗りつぶしのボタ...
-
エクセル フォームの ボタン...
-
エクセルの画面にユーザーフォ...
-
フレーム内のオプションボタン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
UPS警告音を止めたい
-
エクセルの画面にユーザーフォ...
-
【Excel VBA】マクロボタンを表...
-
ユーザーフォームをショートカ...
-
Excel ラジオボタンのリセット...
-
フォームコントロールから作っ...
-
エクセルで、オプションボタン...
-
Accessのフォームでタブの色
-
複数シートのボタンに同一の動...
-
マクロを登録しているボタンが...
-
Excelで、ボタンにコメントをつ...
-
マクロで作ったボタンのサイズ...
-
excel スクロールしても常にボ...
-
EXCELの塗りつぶしのボタ...
-
VBAでオプションボタンなどそれ...
-
EXCELのマクロが 実行時エラー5...
-
マクロ初心者です。 msgboxのre...
-
VBAでクリアボタンのみ残してシ...
-
Access VBAでボタンの背景色を...
おすすめ情報