[240523] TIL

YoungHyun Kim·2024년 5월 23일
1

TIL ✍️

목록 보기
58/68

UIButton

  • pull down 버튼을 사용해서 이미 추가된 약 복용 알람을 수정하거나 삭제하는 기능을 구현하려고 합니다.
	lazy var editButton: UIButton = {
        let button = UIButton()
        button.setImage(UIImage(named: "dots"), for: .normal)
        let edit = UIAction(title: "수정") { _ in
            let intakeAddVC = IntakeAddViewController()
            intakeAddVC.savedIntake = self.intake
            
        }
        let delete = UIAction(title: "삭제", attributes: .destructive) { _ in
            
        }
        let buttonMenus = UIMenu(children: [edit, delete])
        button.menu = buttonMenus
        button.showsMenuAsPrimaryAction = true
        return button
    }()
  • 위의 코드블럭에서와 같이 수정, 삭제 기능을 추가하려고 했으나 문제가 생겼죠?
    1. TableViewCell에서는 ViewController에서와 같은 present 메서드를 지원하지 않는 ^^...
      항상 이런 부분에서 저의 부족함을 느낍니다. 이러한 문제를 해결하기 위해서, editButton이 선언된 Cell이 위치한 ViewController로 이벤트를 넘기도록 하려고 합니다!

Delegate Pattern

  • 왜 갑자기 Delegate Pattern 얘기로 빠지냐면! 제가 지금 작업하는 프로젝트에서는 Delegate 패턴을 사용해서 뷰 간에 데이터를 넘겨주고 있기 때문입니다. 제가 Delegate 패턴을 제대로 이해하고 있어야 프로젝트 리팩토링이 가능하기 때문이기도 합니다.

    TableViewCell <-> ViewController 간에서 사용할 수 있는 Delegate Pattern의 작동 순서

    1. Delegate Protocol 작성
    2. TableViewCell에서 Delegate Protocol을 저장할 수 있는 변수를 선언(weak var로 선언해서 강한 참조 순환 예방)
    3. ViewController가 해당 Delegate Protocol을 채택한 상태에서, 실질적으로 작동할 코드를 작성
    4. ViewController 내부에서 TableViewCell의 delegate를 self로 설정해주면, TableViewCell 내부에서 발생하는 이벤트에 대한 반응을 ViewController에서 조정할 수 있습니다!

내일 중으로 해당 기능 추가해서 TIL에 기록을 남기고 싶습니다

언제쯤 부족하다는 생각이 들지 않을까요.. 뭔가 배우는 것은 참 어려운 것 같네요!

profile
iOS 개발자가 되고 싶어요

0개의 댓글