[ 2022-08-25 ๐Ÿ‘ฝ TIL ]

Burkeyยท2022๋…„ 8์›” 25์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
21/157
post-thumbnail

์˜ค๋Š˜์€ todo๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” AddViewController๋ฅผ ์•ฝ 90%๊นŒ์ง€ ๋๋ƒˆ์Šต๋‹ˆ๋‹ค.
(๋‹ˆ๋จธ์ง€๋Š” ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ๋’ค์— ํ†ต์‹ ์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์งˆ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.)

import UIKit
import DropDown

//todos.append([
//    "todo" : "๋ฐฅ๋จน๊ธฐ",
//    "start" : "2022-08-12",
//    "end" : "2022-08-14",
//    "reDays" : ["์›”"],
//    "alarms" : false ,
//    "important" : "์ƒ",
//    "notes" : "๋ฐฅ๋จน๊ณ  ์ž˜์ž๊ธฐ",
//    "done" : false
//])//ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์„ค์ •

protocol AddDelegate {
    func AddTodo (_ controller: AddViewController, todos : Dictionary<String, Any>)
}

class AddViewController: UIViewController {
    @IBOutlet var tdToDo: UITextField!
    @IBOutlet var tfMemo: UITextField!
    @IBOutlet var btnImportant: UIButton!
    @IBOutlet var lblToday: UILabel!
    
    var todo = Dictionary<String, Any>()
    
    var alarmSet = false
    var startDay : String? = nil
    var endDay : String? = nil
    var important : String? = nil
    let menu = DropDown()
    var reDays = [String]()
    
    @IBOutlet var btnMonday: UIButton!
    @IBOutlet var btnTuesday: UIButton!
    @IBOutlet var btnWednesday: UIButton!
    @IBOutlet var btnThursday: UIButton!
    @IBOutlet var btnFriday: UIButton!
    @IBOutlet var btnSaturday: UIButton!
    @IBOutlet var btnSunday: UIButton!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        menu.dataSource = [ "์ƒ", "์ค‘", "ํ•˜" ]
        menu.anchorView = btnImportant
        menu.bottomOffset = CGPoint(x: 0, y: btnImportant.bounds.height)
        menu.selectionAction = { index, title in
            self.important = title
            self.btnImportant.setTitle(title, for: UIControl.State.normal)
        }
        let today = Date()
        let date = DateFormatter()
        date.dateFormat = "yyyy.MM.dd"
        lblToday.text = date.string(from: today)
        date.dateFormat = "yyyy-MM-dd"
        startDay = date.string(from: today)
        endDay = date.string(from: today)
    }

    @IBAction func choiceStartDay(_ sender: UIDatePicker) {
        let datePK = sender
        
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd"
        
        startDay = dateFormatter.string(from: datePK.date)
    }
    
    @IBAction func choiceEndDay(_ sender: UIDatePicker) {
        let datePK = sender
        
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd"
        
        endDay = dateFormatter.string(from: datePK.date)
    }
    
    @IBAction func toggleAlarm(_ sender: UISwitch) {
        alarmSet = sender.isOn
    }
    
    @IBAction func addTodo(_ sender: UIButton) {
        if (checkInputValue(tdToDo.text) && checkInputValue(startDay)
        && checkInputValue(endDay)) {
            todo["todo"] = tdToDo.text
            todo["start"] = startDay
            todo["end"] = endDay
            todo["reDays"] = reDays
            todo["alarms"] = alarmSet
            todo["important"] = important
            todo["notes"] = tfMemo.text
            todo["done"] = false
            //์„œ๋ฒ„์— ์ „์†ก
            print("data ํ™•์ธ : ", todo)
            _ = navigationController?.popViewController(animated: true)
        }else{
            let alert = UIAlertController(title: "์ž…๋ ฅ๊ฐ’ ํ™•์ธ", message: "๋‚ด์šฉ์„ ํ™•์ธํ•ด ์ฃผ์„ธ์š”", preferredStyle: UIAlertController.Style.alert)
            let alertAction = UIAlertAction(title: "ํ™•์ธ", style: UIAlertAction.Style.cancel, handler: nil)
            
            alert.addAction(alertAction)
            self.present(alert, animated: true, completion: nil)
        }
        print("todo: " , todo)
        
    }
    
    @IBAction func cancelTodo(_ sender: Any) {
        startDay = nil
        endDay = nil
        _ = navigationController?.popViewController(animated: true)
        //todo ๋ชฉ๋ก์œผ๋กœ ๊ฐ€๊ธฐ
    }
    
    func checkInputValue(_ val : String?) -> Bool {
        if (val == nil) || (val  == "") {
            return false
        }
        return true
    }

    @IBAction func btnChangeImportant(_ sender: UIButton) {
        menu.show()
    }
    
    @IBAction func btnMon(_ sender: UIButton) {
        if(reDays.contains("์›”")){
            reDays = reDays.filter(){ $0 != "์›”"}
            btnMonday.backgroundColor = .white
        }else{
            reDays.append("์›”")
        }
    }
    @IBAction func btnTue(_ sender: UIButton) {
        if(reDays.contains("ํ™”")){
            reDays = reDays.filter(){ $0 != "ํ™”"}
            btnTuesday.backgroundColor = .white
        }else{
            reDays.append("ํ™”")
        }
    }
    @IBAction func btnWed(_ sender: UIButton) {
        if(reDays.contains("์ˆ˜")){
            reDays = reDays.filter(){ $0 != "์ˆ˜"}
            btnWednesday.backgroundColor = .white
        }else{
            reDays.append("์ˆ˜")
        }
    }
    @IBAction func btnThu(_ sender: UIButton) {
        if(reDays.contains("๋ชฉ")){
            reDays = reDays.filter(){ $0 != "๋ชฉ"}
            btnThursday.backgroundColor = .white
        }else{
            reDays.append("๋ชฉ")
        }
    }
    @IBAction func btnFri(_ sender: UIButton) {
        if(reDays.contains("๊ธˆ")){
            reDays = reDays.filter(){ $0 != "๊ธˆ"}
            btnFriday.backgroundColor = .white
        }else{
            reDays.append("๊ธˆ")
        }
   }
    @IBAction func btnSat(_ sender: UIButton) {
        if(reDays.contains("ํ† ")){
            reDays = reDays.filter(){ $0 != "ํ† "}
            btnSaturday.backgroundColor = .white
        }else{
            reDays.append("ํ† ")
        }
    }
    @IBAction func btnSun(_ sender: UIButton) {
        if(reDays.contains("์ผ")){
            reDays = reDays.filter(){ $0 != "์ผ"}
            btnSunday.backgroundColor = .white
        }else{
            reDays.append("์ผ")
        }
    }
}

๋ฐ˜๋ณตํ•˜๋Š” ์š”์ผ์„ค์ • ํ•˜๋Š” ๋ฒ„ํŠผ์•ก์…˜์ด ์ค‘๋ณต๋˜๋Š”๋ฐ ์ด๋ถ€๋ถ„์„ ํ•ด๊ฒฐํ•  ์ˆ˜์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์„์ง€๋Š” ๋ชจ๋ฅด๊ฐฐ์Šต๋‹ˆ๋‹ค.

profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€