첫번째 iOS 앱을 만들며 Xcode 기능 익히기
새로운 앱 만들기
[File]-[New]-[Project]-[iOS]-[App]
번들 아이디 : 앱의 유일한 식별자(중복X)
프로젝트 생성 후 Xcode 초기 화면
물구나무 서기는 안한다. 왜냐 전화나 문자가 올 때 당황한다.
실행 단축키 : commed+ R
Navigator 영역
단축키 : shift+cmd+l
Simulator에서 Text Field에 이름 입력하여 키보드 사용
단축키 : commed + K
ViewController.swift 소스
// UIKit 프레임워크를 가져옵니다. UIKit은 iOS 앱 개발에 필요한 사용자 인터페이스 요소와 이벤트 처리 기능을 제공합니다.
import UIKit
// ViewController라는 새로운 클래스를 정의합니다. 이 클래스는 UIViewController를 상속받습니다.
// UIViewController는 iOS 앱에서 화면의 콘텐츠를 관리하는 기본 클래스입니다.
class ViewController: UIViewController {
// viewDidLoad() 메서드를 오버라이드합니다.
// 이 메서드는 뷰 컨트롤러의 뷰가 메모리에 로드된 후에 호출됩니다.
override func viewDidLoad() {
// 부모 클래스(UIViewController)의 viewDidLoad() 메서드를 호출합니다.
// 이는 기본 설정을 유지하기 위해 중요합니다.
super.viewDidLoad()
// 이 주석은 개발자가 뷰가 로드된 후 추가적인 설정이나 초기화 코드를 여기에 작성할 수 있음을 나타냅니다.
// 예를 들어, UI 요소 추가, 데이터 로딩, 네트워크 요청 등의 작업을 수행할 수 있습니다.
// Do any additional setup after loading the view.
}
// 클래스의 끝을 나타냅니다. 추가적인 메서드나 프로퍼티는 이 괄호 안에 정의될 수 있습니다.
}
Assistant editor로 storyboard와 소스 연결
단축키 : ctrl+alt+command+enter
Label에 outlet변수 추가하기
Label에 대한 outlet 연결 후 바뀐 소스
// ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var lblHello: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
Text Field 변수 이름 지정하고 소스 확인
// ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var lblHello: UILabel!
@IBOutlet weak var txtName: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
Button에 액션 함수 추가하고 소스 확인
// ViewController.swift
// UIKit 프레임워크를 가져옵니다. iOS 앱 개발에 필요한 UI 요소들을 제공합니다.
import UIKit
// ViewController 클래스를 정의합니다. UIViewController를 상속받아 화면을 관리합니다.
class ViewController: UIViewController {
// @IBOutlet은 Interface Builder와 코드를 연결하는 어노테이션입니다.
// weak 키워드는 약한 참조를 나타내며, 메모리 관리에 도움을 줍니다.
// UILabel 타입의 lblHello 변수를 선언합니다. 이는 스토리보드의 레이블과 연결됩니다.
@IBOutlet weak var lblHello: UILabel!
// UITextField 타입의 txtName 변수를 선언합니다. 이는 스토리보드의 텍스트 필드와 연결됩니다.
@IBOutlet weak var txtName: UITextField!
// @IBAction은 Interface Builder의 액션(예: 버튼 탭)과 연결되는 메서드임을 나타냅니다.
// btnSend 메서드는 버튼이 탭될 때 호출됩니다.
@IBAction func btnSend(_ sender: UIButton) {
// 텍스트 필드의 텍스트를 레이블의 텍스트로 설정합니다.
lblHello.text = txtName.text
}
// viewDidLoad() 메서드를 오버라이드합니다. 뷰가 메모리에 로드된 후 호출됩니다.
override func viewDidLoad() {
// 부모 클래스의 viewDidLoad() 메서드를 호출합니다.
super.viewDidLoad()
// 추가적인 설정이 필요한 경우 이 곳에 코드를 작성할 수 있습니다.
// Do any additional setup after loading the view.
}
// 클래스의 끝을 나타냅니다.
}
실행 결과
Connections Inspector
최종 코드
// ViewController.swift
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var lblHello: UILabel!
@IBOutlet weak var txtName: UITextField!
@IBAction func btnSend(_ sender: UIButton) {
lblHello.text = "Hello, " + txtName.text!
//느낌표는 옵셔널 값을 강제로 언래핑하는데 사용되지만, 항상 안전한 방법은 아니므로 주의해서 사용해야 합니다.
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
실행 결과
Assets.xcassets의 AppIcon에 1024 아이콘 추가
Debug area console에서 결과 확인하기
'IOS 기초' 카테고리의 다른 글
[IOS 기초] 12주차 BMI판정 앱(3) (1) | 2024.11.21 |
---|---|
[IOS 기초] 11주 BMI판정 앱(2) (0) | 2024.11.20 |
[IOS 기초] 10주 BMI 판정,동영상 재생,웹뷰 앱 (2) | 2024.11.07 |
[IOS 기초] 9주 (2) | 2024.10.31 |
[IOS 기초] 6주 Swift 문법 5(클래스 failable initializer 상속)파일 (4) | 2024.10.10 |
[IOS 기초] 5주 Swift 문법 4(일급시민 클로저 기초)파일 (0) | 2024.10.09 |
[IOS 기초] 4주 Swift 문법 3(함수 guard문)파일 (1) | 2024.09.26 |
[IOS 기초] 3주 Swift 문법 2(optional, as, nil, Any, AnyObject, 연산자, 제어문1) (0) | 2024.09.19 |