0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

guard let x = y else { return }使ってみよう(足し算するだけの簡単App)

Last updated at Posted at 2021-09-16

今回の内容

A94BDE1A-7239-406C-9D24-7BE1EA3CE249_1_201_a.jpeg F173CBBA-6597-45CE-A238-77A7514D3DDA_1_201_a.jpeg

コードと簡単解説

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で下の画像の様に作っています。
0172159F-9861-4154-BA7D-7CC7B2754567_1_201_a.jpeg
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
    }
        
}

終わり

  • 自分がそうだったのですが、勉強を始めて最初の頃は調べても結局あまり理解出来ないことがありました。

  • 理由としては、結局いつ使うの?、どんな使い方をするの?って感じでしたね。

  • なので、アプリとは呼べない様な簡単なコードを何度も調べながら書いて、やっと理解出来たかな?って感じでした。(分からないこともあるけど、それも楽しい)

ご指摘、ご質問などありましたら、コメントまでお願い致します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?