iOS 프로그래밍 12주차

CDH·2024년 11월 20일

출처 : SmileHan - iOS프로그래밍 기초

필수 - iOS에서 개발을 할 땐 기기의 해상도가 각각 다르기 때문에 Auto Layout 개념이 필수다

Auto Layout은 iOS에서 화면의 요소들이 다양한 화면 크기와 방향에 적응할 수 있도록 제약 조건을 설정해 배치와 크기를 동적으로 조정하는 레이아웃 시스템


Outlet 3개 연결하기



Connections Inspector에서 Outlets와 Action 확인하기


기본 세팅

기본 키와 몸무게가 170과 60으로 설정된 것을 앱 내에서 키보드 입력을 받도록 수정


중간 수정1 : 값을 입력하면 실행되나 값이 nil일 경우 crash가 발생한다


swift에서의 형변환과 nil

예시

12 - Int
"12" - String
Int("12") - Optional(12)

Int("hi") - nil

위와 같이 형변환에서도 nil이 발생할 수 있기 때문에 Optinal이 됨


중간 수정2 : 값이 nil일 경우의 예외처리 추가

+ 빨간 글씨로 좀 더 강조

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var txtHeight: UITextField!
    @IBOutlet weak var txtWeight: UITextField!
    @IBOutlet weak var lblResult: UILabel!
    
    @IBAction func calcBmi(_ sender: UIButton) {
        if txtHeight.text == "" || txtWeight.text == "" {
            lblResult.textColor = .red
            lblResult.text = "키와 체중을 입력하세요!"
            return
        }
        else {
            let weight = Double(txtWeight.text!)!
            let height = Double(txtHeight.text!)!
            let bmi = weight / (height*height*0.0001) // kg/m*m
            let shortenedBmi = String(format: "%.1f", bmi)
            var body = ""
            if bmi >= 40 {
                body = "3단계 비만"
            } else if bmi >= 30 && bmi < 40 {
                body = "2단계 비만"
            } else if bmi >= 25 && bmi < 30 {
                body = "1단계 비만"
            } else if bmi >= 18.5 && bmi < 25 {
                body = "정상"
            } else {
                body = "저체중"
            }
            print("BMI:\(shortenedBmi), 판정:\(body)")
            lblResult.text = "BMI:\(shortenedBmi), 판정:\(body)"
        }
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    
    
}

코드 전체 정렬 (Command + a) -> (Ctrl + i)

전체 선택 후 Ctrl + i


break point


Tab Bar

하단에 여러 개의 탭을 제공하여 사용자가 다른 화면으로 쉽게 전환할 수 있도록 하는 네비게이션 요소. 각 탭은 화면 간 빠른 이동을 위한 버튼 역할


새로 만든 View Controller에 Tab Bar 연결

매뉴얼 세그웨이와 릴레이션십 세그웨이의 차이점

특징 매뉴얼 세그웨이 (Manual Segue) 릴레이션십 세그웨이 (Relationship Segue)
트리거 방식 코드에서 직접 호출하여 트리거함 두 뷰 컨트롤러 간의 관계에 의해 자동으로 트리거됨 (예: Table View와 Detail View)
사용 위치 주로 버튼 클릭이나 특정 이벤트에서 사용됨 주로 UITableViewController 또는 UICollectionViewController에서 사용됨
설정 방식 스토리보드에서 뷰 컨트롤러 간 연결을 수동으로 설정 스토리보드에서 뷰 컨트롤러 간 관계를 설정하고, 자동으로 세그웨이가 생성됨
데이터 전달 코드에서 직접 데이터를 전달하거나 준비 작업을 해야 함 자동으로 관련된 데이터를 전달하는 기능 제공 (예: prepare(for:sender:) 호출 필요 없음)
주요 사용 사례 특정 이벤트나 버튼 클릭을 통해 화면 전환이 필요할 때 사용 Table View와 Detail View와 같은 관련된 화면들 간의 데이터 전송에 사용
자동화 세그웨이를 호출하는 코드 작성이 필요함 관계 설정에 따라 자동으로 세그웨이가 설정되고 데이터가 자동으로 연결됨

중요! Tab Bar를 새로 연결하면 Title을 먼저 바꿔주기


비디오 재생을 위한 소스코드(VideoViewController) 만들기

매우 중요! 동영상을 프로젝트에 복사할 땐 항상 동영상 체크

0개의 댓글