점진적 과부하 개발 블로그

SwiftUI Alert 알아보기 본문

Swift

SwiftUI Alert 알아보기

지용빡 2022. 6. 21. 23:13
반응형
SwiftUI Alert 알아보기
UIKit & SwiftUI 비교
  • UIKit
    • 커스텀에 더 유용한 것 같다.
    • UIAlertController와 UIAlertAction을 이용해서 구현한 코드
  @IBAction func tapAddButton(_ sender: UIBarButtonItem) {
    let alert = UIAlertController(title: "타이틀", message: nil, preferredStyle: .alert)
    let registerButton = UIAlertAction(title: "확인", style: .default, handler: { [weak self] _ in
      guard let title = alert.textFields?[0].text else { return }
      let task = Task(title: title, done: false)
      self?.tasks.append(task)
      self?.tableView.reloadData()
    })
    let cancelButton = UIAlertAction(title: "취소", style: .cancel, handler: nil)
    alert.addTextField(configurationHandler: { textField in
      textField.placeholder = "placeHolder."
    })
    alert.addAction(cancelButton)
    alert.addAction(registerButton)
    self.present(alert, animated: true, completion: nil)
  }

  • SwiftUI
    • 굉장히 직관적으로 코드를 짤수가 있다.
    • 하지만 아직 호환성이 좋지가 않다,
struct ContentView: View {
    @State private var presentAlert = false
    
    var body: some View {
        NavigationView {
            List {
                Text("ToDoList")
            }
            .navigationBarTitle(Text("ToDoList"))
            .navigationBarItems(
                trailing:
                    Button(
                        action: {
                            self.presentAlert = true
                        },
                        label: {
                            Image(systemName: "plus.circle")
                        }
                    )
                    .alert("타이틀", isPresented: $presentAlert, actions: {
                        
                        Button("확인", action: {})
                        Button("취소", role: .cancel, action: {})
                    })
                    
            )
        }
    }
}

반응형