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

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

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

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

Swift

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

Q&A

解決済

2回答

1445閲覧

コードでStoryboardに配置したSegmentedControlの数を変える方法

samson66

総合スコア35

Xcode

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

Swift

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

0グッド

0クリップ

投稿2019/08/19 07:30

編集2019/08/19 09:22

Storyboardを使わずにコード側から生成したSegmentedControlの数を変える方法を勉強したのですが、
addSubViewを使わずに(コード側からSegmentedControlを生成しない)、
Storyboard側で配置したSegmentedControlの数をコードで変えるにはどうすればよいでしょうか?

以下はaddSubViewを使ってSegmentedControlを全てコード側のみで実装した方法

Swift

1import UIKit 2 3class ViewController: UIViewController { 4 var segmentedControl: UISegmentedControl! 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 // Do any additional setup after loading the view, typically from a nib. 9 let params = ["左", "中", "右"] 10 segmentedControl = UISegmentedControl(items: params) 11 segmentedControl.frame = CGRect(x:20, y:20,width:200, height:30) 12 self.view.addSubview(segmentedControl) 13 } 14}

イメージ説明

追記:成功しました。

swift

1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var segbutton: UISegmentedControl! 6  //以下の関数を挿入 7 func insertSegment(withTitle title: String?,at segment: Int,animated: Bool) { 8 } 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 // Do any additional setup after loading the view, typically from a nib. 13 //最初に入っていたボタンを全て削除 14 segbutton.removeAllSegments() 15 //一つ一つボタンを追加するコード 16 segbutton.insertSegment(withTitle: "page1", at: 0, animated: true) 17 segbutton.insertSegment(withTitle: "page2", at: 1, animated: true) 18 segbutton.insertSegment(withTitle: "page3", at: 2, animated: true) 19 segbutton.insertSegment(withTitle: "page4", at: 3, animated: true) 20 } 21}

イメージ説明

関数(func insertSegment)の使い方に関してはapple公式に載っていなかったため、
過去の先行質問を参考にしました。
https://teratail.com/questions/104096

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

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

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

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

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

guest

回答2

0

ベストアンサー

以下のサイトを参考に、UISegmentedContgrolをアウトレットとして接続してください。
https://capibara1969.com/1253/

viewDidLoad後にアウトレットのUIは操作できますので、
コードからinsertSegmentするなりしてください。

関数一覧はこちらをどうぞ。
https://developer.apple.com/documentation/uikit/uisegmentedcontrol

投稿2019/08/19 07:55

takabosoft

総合スコア8356

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

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

samson66

2019/08/19 09:33

URLまで載せていただきありがとうございましたm(_ _)m 追記の方法で成功しました!
guest

0

一旦 removeAllSegments() してからアイテム突っ込んで下さい。

投稿2019/08/19 07:56

fuzzball

総合スコア16731

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

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

samson66

2019/08/19 09:32 編集

回答ありがとうございます。 追記の方法で成功しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問