変な題名にしてすみません。
私が思っているのは、Yahoo知恵袋で例えると,マイページの画面で、質問ボタンを押した時、自分が投稿したのが一覧になって表示されます。また、お気に入りボタンを押すと,お気に入りに追加した投稿が表示される、
このように、一つの画面の中で画面移行をしたいのですが、自分で試したものの、画面が切り替わる時に下から画面が切り替わってしまい、思った通りに行きません、知恵袋のように、ボタンを押したら画面がパッと切り替わるようにするにはどのようにすればいいでしょうか?
このような感じで、知恵袋に似た画面を用意して、緑のボタンを押したら左の画面に、青のボタンを押したら真ん中の画面に、オレンジのボタンを押したら右の画面に移行するように作ってみました。しかし、画面が切り替わる時下から画面が出てきてしまいます。そもそもこの方法であっているのかがわかりません、三つボタンがあれば、三度手間です。簡単でいい方法はないでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
UISegmentedControlとUIContainerViewを使うと良いんじゃないでしょうか。
以下一例です。
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を選んでください。
これをビルドすると以下のように動きます。
以下追記です
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総合スコア1349
0
はじめまして。
画面遷移(切り替わり)のときのエフェクトが変わればよいのであれば、
以下が参考になるかもしれません。
[iOS8] Swiftでモーダルの切り替わり方サンプル(modalTransitionStyle)
画面を切替るときのエフェクトを設定することで、めくったりずらしたりと変更が可能です。
投稿2017/02/11 12:28
総合スコア250
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/12 04:43
2017/02/12 05:19
2017/02/12 05:55
2017/02/12 06:32
2017/02/12 07:20
2017/02/12 08:28
2017/02/13 05:53
2017/02/13 12:12
2017/02/13 12:14
2017/02/16 10:30