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

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

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

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

button

HTMLで用いる<button>タグです。

Swift

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

Q&A

解決済

1回答

1448閲覧

【swift】Xibに設定したtoolbarのボタンのActionを実装したい

syoco0330

総合スコア30

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

button

HTMLで用いる<button>タグです。

Swift

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

0グッド

0クリップ

投稿2020/06/26 03:29

実現したいこと
PickerCell.xibにUIPickerとUIToolBar, BarButtonItemを載せています。
BarButtonItemを押すとUIPickerの値を取得したい。

UIPickerの値の取得ができたらSectionに取得した情報を反映させる予定です。

現状の画面
イメージ

AddViewController.swift

1 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 2 print("DEBUG_PRINT: Section(indexPath.section)が押されました") 3 if indexPath.section == 0 { 4 let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 5 cell.detailTextLabel?.text = "aaa" 6 cell.contentView.backgroundColor = .white 7 return cell 8 } else { 9 let cell = tableView.dequeueReusableCell(withIdentifier: "PickerCell", for: indexPath) as! PickerCell 10 if openedSections.contains(1) { 11 12 // セクションが開いているときに処理を実装する 13 // ボタンを押した時にpikerViewの値を取得して、セクションに反映させる 14 15 } 16 17 18 return cell 19 } 20 }

PickerView.swift

1import UIKit 2 3class PickerCell: UITableViewCell,UIPickerViewDelegate,UIPickerViewDataSource { 4 5 6 7 8 9 @IBOutlet weak var pickerView: UIPickerView! 10 @IBOutlet weak var toolBar: UIToolbar! 11 @IBOutlet weak var doneButton: UIBarButtonItem! 12 13 override func awakeFromNib() { 14 super.awakeFromNib() 15 print("DEBUG_PRINT: PickerCellが押されました") 16 pickerView.delegate = self 17 pickerView.dataSource = self 18 19 // Initialization code 20 } 21 22 override func setSelected(_ selected: Bool, animated: Bool) { 23 super.setSelected(selected, animated: animated) 24 25 // Configure the view for the selected state 26 } 27 28 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 29 print("DEBUG_PRINT: numberOfRowsIn") 30 print(component) 31 switch component { 32 case 0: 33 return 60 34 case 1: 35 return 1 36 case 2: 37 return 60 38 case 3: 39 return 1 40 default: 41 return 1 42 } 43 } 44 45 func numberOfComponents(in pickerView: UIPickerView) -> Int { 46 return 4 47 } 48 49 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 50 51 switch component { 52 case 0: 53 return "(row)" 54 case 1: 55 return "min" 56 case 2: 57 return "(row)" 58 case 3: 59 return "sec" 60 default: 61 return "" 62 } 63 } 64 65 66} 67

AddViewController.swiftのコメントアウト部分に処理を実装するのだと思うのですが、
なかなか実装できず困っております。

ご教授いただけますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

いろいろ疑問なのですが…

これtableViewで作る意味ありますか?もしくは、pickerをCellに載せる意味ありますか?

このまますすめるならdelegateで処理されると良いと思います。

投稿2020/06/26 08:06

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

syoco0330

2020/06/26 08:51 編集

コメントありがとうございます。 タイマーの設定をする画面になるのですが、 設定項目の拡張性とユーザーの使い勝手を意識してTableViewにしており、 画面が長くなるのを抑えるために 設定を変更する場合のみCellが開閉する仕様にするためにCellに載せました。 もう少し良い実装方法があれば採用したいのですが、もしありましたらご教授いただくことは可能でしょうか?
退会済みユーザー

退会済みユーザー

2020/06/26 09:01 編集

開閉するならいいんじゃないかとも思いますが、 pickerを開いたままユーザーさんがtableViewを下にスクロールしようとすると、pickerが動いたりして煩わしいかと思います。 pickerの位置がセルによって異なるのでつどピッカーの位置をユーザーが認識して操作することになって、 場所によっては指が届かないことも。 pickerが見切れたり、場所によってはiOSのスワイプ処理とバッティングする可能性も。 複雑な実装を必要とする割にメリットの部分が感じられないかな。 どのみち同時にpickerを使うことはないんだから、時刻の設定のときに下からmordal表示させればいいのかと思います。 設定済みの時間はcellに表示しておくからみえるんだろうし。 感じ方は人それぞれだと思いますので、基本は自分がベストと思った実装方法でよいと思いますよ
syoco0330

2020/06/26 09:18

ご返答ありがとうございます。 実装後の煩わしさまで考えていなかったので、とてもタメになります。 開閉にこだわり過ぎてしまったので、使いやすさを考えてモーダルでの実装に変えることにします。 ありがとうございました!
退会済みユーザー

退会済みユーザー

2020/06/26 09:25

いや、私要件全部しってるわけじゃないので、実装方法の変更などはよく考えてから行ってくださいね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問