← 메인으로

0812 기본적인 이벤트 처리

SwiftUI가 데이터 주도적이라고는 했지만, 사용자 인터페이스인 뷰를 사용자가 조작할 때 발생하는 이벤트 처리는 여전히 필요하다. Button 뷰와 같은 몇몇 뷰는 사용자의 상호작용을 유도하기 위한 목적으로만 제공된다.

사실, Button 뷰는 버튼 내용과 함께 클릭이 감지될 때 호출될 메서드로 선언되어야 한다.예를 들어, 뷰 전체를 하나의 버튼으로 지정할 수도 있다. 하지만 대부분의 경우에 Text 뷰는 보통 Button의 content로 사용될 것이다.

struct ContentView: View { var body: some view { Button(action: buttonPressed) { Text("Click Me") } } func buttonPressed() { //동작할 코드 } } 

[!note] 어라? 소스코드에서 함수의 선언 위치가 함수 호출보다 뒤에 있어도 문제가 안되네?? -> Swift 컴파일러가 한 파일 안에 있는 모든 함수, 메서드, 프로퍼티 선언을 먼저 스캔해서 "이름과 시그니처"를 기억해 둔 다음에, 실제 호출 부분을 해석하기 때문이다.

단, 함수가 다른 타입(다른 struct, class, extension)에 있음녀 그 범위 안에서만 접근 가능하니 위치보다는 접근 범위(scope)가 더 중요하다.

Button(action: { // 동작할 코드 }) { Text("Click Me") } 
Button(action: { // 동작할 코드 }) { Image(systemName: "sqaure.and.arrow.down") }