質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

4761閲覧

画面移行で一部の画面を変更する方法

NamaKori

総合スコア81

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/02/09 09:05

編集2017/02/12 07:21

ここで、エラーが起きてしまいました。
イメージ説明

イメージ説明変な題名にしてすみません。
私が思っているのは、Yahoo知恵袋で例えると,マイページの画面で、質問ボタンを押した時、自分が投稿したのが一覧になって表示されます。また、お気に入りボタンを押すと,お気に入りに追加した投稿が表示される、
このように、一つの画面の中で画面移行をしたいのですが、自分で試したものの、画面が切り替わる時に下から画面が切り替わってしまい、思った通りに行きません、知恵袋のように、ボタンを押したら画面がパッと切り替わるようにするにはどのようにすればいいでしょうか?

イメージ説明

イメージ説明
このような感じで、知恵袋に似た画面を用意して、緑のボタンを押したら左の画面に、青のボタンを押したら真ん中の画面に、オレンジのボタンを押したら右の画面に移行するように作ってみました。しかし、画面が切り替わる時下から画面が出てきてしまいます。そもそもこの方法であっているのかがわかりません、三つボタンがあれば、三度手間です。簡単でいい方法はないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

UISegmentedControlとUIContainerViewを使うと良いんじゃないでしょうか。
以下一例です。

storyboard

swift

1 2import UIKit 3 4class ViewController: UIViewController { 5 6 7 //これらはUIContainerViewです 8 @IBOutlet weak var blueView: UIView! 9 @IBOutlet weak var redView: UIView! 10 @IBOutlet weak var yellowView: UIView! 11 12 @IBAction func touch(_ sender: UISegmentedControl) { 13 14 let position = sender.selectedSegmentIndex 15 print(position) 16 //表示したいViewだけfalseにします 17 if position == 0 { 18 blueView.isHidden = false 19 redView.isHidden = true 20 yellowView.isHidden = true 21 } else if position == 1 { 22 blueView.isHidden = true 23 redView.isHidden = false 24 yellowView.isHidden = true 25 } else if position == 2 { 26 blueView.isHidden = true 27 redView.isHidden = true 28 yellowView.isHidden = false 29 } 30 31 } 32 33 override func viewDidLoad() { 34 super.viewDidLoad() 35 blueView.isHidden = false 36 redView.isHidden = true 37 yellowView.isHidden = true 38 // Do any additional setup after loading the view, typically from a nib. 39 } 40 41 override func didReceiveMemoryWarning() { 42 super.didReceiveMemoryWarning() 43 // Dispose of any resources that can be recreated. 44 } 45 46 47} 48 49

Storyboard上のView ControllerでUIViewとなっているのがUIContainerViewです。一枚のように見えますが三枚重なっているので注意してください。各UIContainerViewをcontrol + クリックで好きな色のView Controllerと繋ぎます。その時embededを選んでください。
これをビルドすると以下のように動きます。
Simulator

以下追記です
UISegumentedControlがUIButtonになって場合分けが違う関数になるだけです。以下はUIButtonで実装した場合です。

swift

1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var blueView: UIView! 6 @IBOutlet weak var redView: UIView! 7 @IBOutlet weak var yellowView: UIView! 8 9 @IBAction func blue(_ sender: UIButton) { 10 blueView.isHidden = false 11 redView.isHidden = true 12 yellowView.isHidden = true 13 } 14 15 @IBAction func red(_ sender: UIButton) { 16 blueView.isHidden = true 17 redView.isHidden = false 18 yellowView.isHidden = true 19 } 20 21 @IBAction func yellow(_ sender: UIButton) { 22 blueView.isHidden = true 23 redView.isHidden = true 24 yellowView.isHidden = false 25 } 26 27 override func viewDidLoad() { 28 super.viewDidLoad() 29 blueView.isHidden = false 30 redView.isHidden = true 31 yellowView.isHidden = true 32 // Do any additional setup after loading the view, typically from a nib. 33 } 34 35 override func didReceiveMemoryWarning() { 36 super.didReceiveMemoryWarning() 37 // Dispose of any resources that can be recreated. 38 } 39 40 41} 42 43

投稿2017/02/12 03:49

編集2017/02/12 05:51
xAxis

総合スコア1349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NamaKori

2017/02/12 04:43

こういう感じですね! ありがとうございました。
NamaKori

2017/02/12 05:19

これを、Buttonで切り替えを行うにはどうすればいいでしょうか?
NamaKori

2017/02/12 05:55

ここまで丁寧に教えてくださるなんて... ちょっと感動しました、ありがとうございます!
xAxis

2017/02/12 06:32

いいえ、私の方も最初からボタンで配置したほうが分かりやすかったなと今では思ってます。謎が謎を呼ぶ形になってしまったようなのでもう一つの質問も回答しときます。
NamaKori

2017/02/12 07:20

あと、質問なのですが、override func viewDidLoad() の所でエラーが起きてしまいました、上に画像を貼りました。見てもらえないでしょうか?
xAxis

2017/02/12 08:28

コードとStoryboardは紐付けされていますか?
NamaKori

2017/02/13 05:53

@IBAction func blue(_ sender: UIButton)のことですか?
xAxis

2017/02/13 12:12

そのあたりですね。 エラーの箇所から @IBOutlet weak var blueView: UIView! とコードが紐付けされてないかもしれませんね。
xAxis

2017/02/13 12:14

修正です。 @IBOutlet weak var blueView: UIView! とStoryboardが紐付けされてないかもしれませんね。
NamaKori

2017/02/16 10:30

わかりました!やってみます。
guest

0

はじめまして。

画面遷移(切り替わり)のときのエフェクトが変わればよいのであれば、
以下が参考になるかもしれません。

[iOS8] Swiftでモーダルの切り替わり方サンプル(modalTransitionStyle)

画面を切替るときのエフェクトを設定することで、めくったりずらしたりと変更が可能です。

投稿2017/02/11 12:28

KOBAYASHI.Jun

総合スコア250

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NamaKori

2017/02/11 14:33

すいません、私の説明が漠然としていました。 これは参考にしたいと思います! 私が知りたいことは、このteratailで言えば、右上の自分のアイコンを押し”回答”ボタンを押した時”回答” ”質問” ”バッジ” ”スコア” ボタンが真ん中あたりにあると思います。これらのどれかを押した時それにあった画面に切り替わると思います。これと同じようなことをしたいわけなのですが、 どのようにすればいいでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問