
ViewController.swift
swift
1import UIKit 2 3class ViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource{ 4 5 @IBOutlet weak var mytableView: UITableView! 6 var pickerView = UIPickerView() 7 let number = ["回","lep"] 8 let datalist2 = ["kg","lbs"] 9 @IBAction func customalertbtr(_ sender: Any) { 10 let customAlert = CustomAlert(frame: CGRect(x: 0.0, y: 0.0, width: 350 , height: 275)) 11 customAlert.center = self.view.center 12 customAlert.backgroundColor = .orange 13 //print(customAlert) //これ追加 14 self.view.addSubview(customAlert) 15 } 16 17 override func viewDidLoad() { 18 super.viewDidLoad() 19 // Do any additional setup after loading the view, typically from a nib. 20 } 21 22 override func didReceiveMemoryWarning() { 23 super.didReceiveMemoryWarning() 24 // Dispose of any resources that can be recreated. 25 } 26 27 28} 29
CustomAlert.swift
swift
1import UIKit 2 3class CustomAlert: UIView ,UIPickerViewDataSource,UIPickerViewDelegate { 4 5 //lepsに関して 6 let item = ["-5","-4","-3","-2","-1","0","1","2","3","4","5",] 7 8 @IBOutlet var myview: UIView! 9 @IBOutlet weak var titlelbl: UILabel! 10 @IBOutlet weak var exlbl: UILabel! 11 @IBOutlet weak var lepstxt: UITextField! 12 @IBOutlet weak var kgtxt: UITextField! 13 @IBOutlet weak var lepslbl: UILabel! 14 @IBOutlet weak var lepspicker: UIPickerView! 15 16 @IBAction func kglbs(_ sender: Any) 17 { 18 switch (sender as AnyObject).selectedSegmentIndex { 19 case 0: 20 //mytableView.text = "kg" 21 print("kg") 22 case 1: 23 //mytableView.text = "lbs" 24 print("lbs") 25 default: break 26 } 27 } 28 29 @IBAction func difficulty(_ sender: Any) 30 { 31 switch (sender as AnyObject).selectedSegmentIndex { 32 case 0: 33 kgtxt.textColor = UIColor.blue 34 case 1: 35 kgtxt.textColor = UIColor.red 36 case 3: 37 kgtxt.textColor = UIColor.darkGray 38 default: break 39 } 40 } 41 42 43 44 45 //コードから 46 override init(frame: CGRect) { 47 super.init(frame: frame) 48 self.commonInit() 49 } 50 51 //ストボーから 52 required init?(coder aDecoder: NSCoder) { 53 super.init(coder: aDecoder) 54 self.commonInit() 55 } 56 57 fileprivate func commonInit() { 58 59 guard let view = UINib(nibName: "CustomAlert", bundle: nil).instantiate(withOwner: self, options: nil).first as? UIView else { 60 return 61 } 62 63 //textfieldに関して 64 lepstxt.placeholder = "個数を入力してください。" 65 kgtxt.placeholder = "値段を入力してください。" 66 lepstxt.font = UIFont(name: "Hiragino Sans", size: 11) 67 kgtxt.font = UIFont(name: "Hiragino Sans", size: 11) 68 69 //デリゲート設定 70 lepspicker.delegate = self 71 lepspicker.dataSource = self 72 //lepspicker.selectedRow(inComponent: 6) 73 //lepspicker.backgroundColor = .gray 74 75 view.frame = self.bounds 76 77 self.addSubview(view) 78 79 } 80 81 @IBAction func cancel(_ sender: Any) { 82 self.removeFromSuperview() 83 } 84 @IBAction func ok(_ sender: Any) { 85 86 let item = lepstxt.text 87 let array = kgtxt.text 88 lepslbl.text = String() 89 //mytbleView.text = String(item,array) 90 } 91 92 93 // PickerViewの列数 94 func numberOfComponents(in pickerView: UIPickerView) -> Int { 95 return 1 96 } 97 98 // PickerViewの行数 99 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 100 return item.count 101 } 102 103 // PickerViewの項目 104 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 105 return item[row] 106 } 107 108 // PickerViewの項目選択時 109 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 110 111 } 112 113 114}
やりたいこと
alertで内で入力した二つのtextfieldとlabelとsegmentで選択した文字を横一列に反映させたい。
困っていること
ViewController.swiftにあるtableViewのoutletをCustomAlert.swift内に書こうとすると[Use of unresolved identifier 'mytbleView']とエラーが表示される。
通常のアラートなら入力したものをtableViewに反映させれるのですがxibを使ったやり方はどこのサイトで調べてもそのような記述がなかったのでやり方が分からなくて困っています。
イメージとしては
りんごが1(個) 100[円]
マンゴが2(個) 50[ドル]
のように表示させたい。
()がlabel []がsegment 後はtextfieldです
swift
1@IBAction func ok(_ sender: Any) { 2 let name1 = lepstxt.text 3 //let name2 = lepspicker.textInputMode 4 let name3 = "個" 5 let name4 = "×" 6 let name5 = kgtxt.text 7 8 9 lepstxt.text = String() 10 kgtxt.text = String() 11 print(name1! + name3 + name4 + name5!) 12 let str = "print" 13 delegate?.appendData(str: str) // ViewControllerのメソッドを実行 14 self.removeFromSuperview() 15 }

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/02/19 10:27
2018/02/19 10:29
退会済みユーザー
2018/02/19 12:31