今回の内容
コードと簡単解説
guard let x = y else { return }を使用して関数を作る。
-
この関数では、
Int型
の引数upperTextとunderText
に入ってきた値を、nilで無いなら足し算をして、配列に入れTableViewに表示できるようにします。 -
引数upperTextとunderText
の両方または片方でもnilだった場合、アラートで知らせる様にします。
func addition(upperText:Int?,underText:Int?){
guard let resultUpperText = upperText else { self.showAlert(); return } //nilならアラートを表示して後続の処理をさせない
guard let resultUnderText = underText else { self.showAlert(); return } //nilならアラートを表示して後続の処理をさせない
cellLeftLabelContentsArray.append(String(resultUpperText + resultUnderText))
upperTextField.text = ""
underTextField.text = ""
tableView.reloadData()
}
全体コード
- TableViewなどはMain.storyboardで下の画像の様に作っています。

import UIKit
class ViewController: UIViewController {
@IBOutlet weak var upperSystemIndigoView: UIView!
@IBOutlet weak var underSystemIndigoView: UIView!
@IBOutlet weak var upperTextField: UITextField!
@IBOutlet weak var underTextField: UITextField!
@IBOutlet weak var addButton: UIButton!
@IBOutlet weak var tableView: UITableView!
var cellLeftLabelContentsArray = [String]()
override func viewDidLoad() {
super.viewDidLoad()
upperSystemIndigoView.layer.cornerRadius = 120.0 //角を丸くする
upperSystemIndigoView.layer.maskedCorners = [.layerMinXMaxYCorner] //丸くする角を指定する
upperSystemIndigoView.layer.shadowOffset = CGSize(width: 3, height: 3) //影をつける
upperSystemIndigoView.layer.shadowRadius = 10.0 //影のぼかし具合を設定
upperSystemIndigoView.layer.shadowOpacity = 0.8 //影の透明度を設定
underSystemIndigoView.layer.cornerRadius = 120.0
underSystemIndigoView.layer.maskedCorners = [.layerMaxXMinYCorner]
underSystemIndigoView.layer.shadowOffset = CGSize(width: 3, height: 3)
underSystemIndigoView.layer.shadowRadius = 10.0
underSystemIndigoView.layer.shadowOpacity = 0.8
upperTextField.layer.borderColor = UIColor.systemIndigo.cgColor
upperTextField.layer.borderWidth = 1.0
upperTextField.borderStyle = .roundedRect
underTextField.layer.borderColor = UIColor.systemIndigo.cgColor
underTextField.layer.borderWidth = 1.0
addButton.layer.cornerRadius = 10.0
addButton.layer.shadowOffset = CGSize(width: 1, height: 1)
addButton.layer.shadowRadius = 10.0
addButton.layer.shadowOpacity = 0.4
tableView.layer.borderColor = UIColor.systemIndigo.cgColor
tableView.layer.borderWidth = 1.0
tableView.dataSource = self
}
@IBAction func add(_ sender: UIButton) {
addition(upperText: Int(upperTextField.text!), underText: Int(underTextField.text!))
}
func addition(upperText:Int?,underText:Int?){
guard let resultUpperText = upperText else { self.showAlert(); return }
guard let resultUnderText = underText else { self.showAlert(); return }
cellLeftLabelContentsArray.append(String(resultUpperText + resultUnderText))
upperTextField.text = ""
underTextField.text = ""
tableView.reloadData()
}
func showAlert(){
let usualAlert = {() -> UIAlertController in
let alert = UIAlertController(title: "nilを見つけたよ", message: "入力されているか確認してね", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "No", style: .destructive, handler: { _ in
print("No")
}))
alert.addAction(UIAlertAction(title: "Yes", style: .default, handler: { _ in
print("Yes")
}))
return alert
}()
self.present(usualAlert, animated: true, completion: nil)
}
}
extension ViewController:UITableViewDataSource{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return cellLeftLabelContentsArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
let cellLeftLabel = cell.contentView.viewWithTag(1) as! UILabel
cellLeftLabel.text = cellLeftLabelContentsArray[indexPath.row]
return cell
}
}
終わり
-
自分がそうだったのですが、勉強を始めて最初の頃は調べても結局あまり理解出来ないことがありました。
-
理由としては、結局いつ使うの?、どんな使い方をするの?って感じでしたね。
-
なので、アプリとは呼べない様な簡単なコードを何度も調べながら書いて、やっと理解出来たかな?って感じでした。(分からないこともあるけど、それも楽しい)
ご指摘、ご質問などありましたら、コメントまでお願い致します。