# iOS | Swift/--- Project

[Alarm] #+2. 상세 화면에서 알람 삭제 기능 및 알람 시간 텍스트 표시 수정

jiniz.ll 2022. 2. 3. 15:40
  • 개발 일자 : 2022. 2. 3

 

상세 화면에서 알람 삭제 기능 구현

  • 지금까지는 알람 목록 화면에서 알람 삭제 기능만 구현해뒀는데 알람 상세 화면에서 삭제 셀을 선택했을 때, 알람 삭제 기능이 동작하도록 하기 위해 이전 AlarmSaving 프로토콜에 deleteAlarm() 을 추가했음

 

  • deleteAlarm() 을 추가하고 나니 AlarmSaving 이라는 이름이 좀 애매한 것 같아서 AlarmEditingDelegate 로 변경하였고
  • tableView(didSelectRowAt:) 메서드에 해당 셀이 선택된 경우 deleteAlarm() 을 호출하도록 하였음
  • 첨에 이상한 값이 삭제되길래 봤더니 해당 메서드의 인자로 오는 indexPath 를 넘기고 있었다,,
protocol AlarmEditingDelegate: AnyObject {
    ...
    func deleteAlarm(at indexPath: IndexPath)
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        
    ...
    if indexPath.section == 1, let selectedIndexPath = self.indexPath {
        delegate?.deleteAlarm(at: selectedIndexPath)
        dismiss(animated: true, completion: nil)
    }
    ...
}

 

  • 따라서 AlarmListVC 에서 해당 메서드를 구현해주었음
func deleteAlarm(at indexPath: IndexPath) {
    alarmManager.delete(alarmRowAt: indexPath)
    alarmTableView.reloadData()
}

 

알람 시간 텍스트 표시 수정

와,, 시간을 표시할 때 숫자가 한 자리 수이면 04:08 이런식으로 나와서 0을 없애주려고 뭔가 대단한 작업이 필요한가 싶었는데 

 

dateFormat 을 설정할 때, 해당 자리의 문자를 하나만 사용하면 숫자가 한 자리 수일 때 0이 출력되지 않는다 (신비로운 포맷의 세상)

 

  • Date+String+Converter 파일에서 displayTime 형식을 a h:mm 으로 변경해주었음
enum DateFormats: String {
    case displayTime = "a h:mm"
}

 

 

 

참고.

Swift Date() 날짜구하기, DateFormatter() 다루기 오전, 오후 등