viewcontroller.swift
import
1 2class ViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource{ 3 4 var pickerView = UIPickerView() 5 let number = ["回","lep"] 6 let datalist2 = ["kg","lbs"] 7 @IBAction func customalertbtr(_ sender: Any) { 8 /*let view = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 300 , height: 200)) 9 view.backgroundColor = .orange 10 self.view.addSubview(view)*/ 11 let customAlert = CustomAlert(frame: CGRect(x: 0.0, y: 0.0, width: 350 , height: 350)) 12 customAlert.center = self.view.center 13 customAlert.backgroundColor = .orange 14 print(customAlert) //これ追加 15 self.view.addSubview(customAlert) 16 } 17 @IBAction func btr(_ sender: Any) { 18 let alert = UIAlertController(title: "値を入力してください", message: "\n\n\n\n\n\n\n\n", preferredStyle: .alert) 19 // テキストフィールドを追加 20 alert.addTextField(configurationHandler: {(textField: UITextField!) -> Void in 21 textField.placeholder = "回数を入力してください。" 22 }) 23 //二個目 24 alert.addTextField(configurationHandler: {(textField: UITextField!) -> Void in 25 textField.placeholder = "重量を入力してください。" 26 }) 27 28 let saveAction = UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) -> Void in 29 //self.mytableView.reloadData() 30 } 31 let cancelAction = UIAlertAction(title: "キャンセル", style: .default) { (action:UIAlertAction!) -> Void in 32 } 33 34 //PickerView 35 pickerView = UIPickerView(frame:CGRect(x:0, y:50, width:view.bounds.width*0.6, height:300)) // 配置、サイズ 36 pickerView.frame = CGRect(x:0, y:0, width:view.bounds.width*0.7, height:280) 37 pickerView.dataSource = self 38 pickerView.delegate = self 39 alert.view.addSubview(pickerView) 40 41 alert.addAction(saveAction) 42 alert.addAction(cancelAction) 43 44 present(alert, animated: true, completion: nil) 45 } 46 // PickerViewの列数 47 func numberOfComponents(in pickerView: UIPickerView) -> Int { 48 return 2 49 } 50 51 // PickerViewの行数 52 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 53 if component == 0 { 54 // 1個目のピッカーの設定 55 return number.count 56 } 57 return datalist2.count 58 } 59 60 // PickerViewの項目 61 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 62 if component == 0 { 63 return number[row] 64 } 65 return datalist2[row] 66 } 67 68 // PickerViewの項目選択時 69 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 70 71 } 72 73 74 override func viewDidLoad() { 75 super.viewDidLoad() 76 // Do any additional setup after loading the view, typically from a nib. 77 } 78 79 override func didReceiveMemoryWarning() { 80 super.didReceiveMemoryWarning() 81 // Dispose of any resources that can be recreated. 82 } 83 84 85} 86
custom alert.swift
import UIKit class CustomAlert: UIView ,UIPickerViewDataSource,UIPickerViewDelegate { let item = ["円","ドル"] @IBOutlet var myView: UIView! @IBOutlet weak var titlelbl: UILabel! @IBOutlet weak var exlbl: UILabel! @IBOutlet weak var lepslbl: UITextField! @IBOutlet weak var kg: UITextField! @IBOutlet weak var times: UILabel! @IBOutlet weak var sub: UIPickerView! @IBOutlet weak var kgandlbs: UISegmentedControl! @IBOutlet weak var lownormalhigh: UISegmentedControl! //コードから override init(frame: CGRect) { super.init(frame: frame) //self.commonInit() } //ストボーから required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) //self.commonInit() } fileprivate func commonInit() { guard let view = UINib(nibName: "CustomAlert", bundle: nil).instantiate(withOwner: self, options: nil).first as? UIView else { return } /*/ デリゲート設定 sub.delegate = self sub.dataSource = self*/ //view.frame = self.bounds self.addSubview(view) } @IBAction func cancelbtr(_ sender: Any) { } @IBAction func okbtr(_ sender: Any) { } // PickerViewの列数 func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } // PickerViewの行数 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return item.count } // PickerViewの項目 func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return item[row] } // PickerViewの項目選択時 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { } }
やりたいこと
自分で作ったカスタムアラートを呼び出せるようにしたいです。
困っていること
コード内でのコードエラーはないが実行していざ呼び出そうとするとsignal sigabrtになってしまいます。
おそらくviewcontroller.swiftでの呼び出しについてのコードがよくないのかなと考えらえれるのですがどこがダメなのか分からなく困っています。
xibのファイル名をcustomAlertに変更したらsignal sigabrtで強制終了はされなくはなったのですが以前alertが呼び出されずに困っています。
回答1件
あなたの回答
tips
プレビュー