TIL

54일차 TIL

h_luz 2024. 5. 14. 23:50

 

모의면접 시뮬레이션 Q&A

 

Q1. Storyboard를 이용해 UI를 구현하는 방법을 설명해 주세요.

A : UIViewController를 생성해서 UI 요소들을 드래그, 드롭 방식으로 ViewController의 View에 배치하여 구현합니다.

스토리보드에서나 코드에서나 UI를 구현할 때는 오토레이아웃 Constraints를 잘 잡아주는 것이 중요하며,

스토리보드에서 요소들은 IBOulet, IBAction을 통해 코드와 연결하여 여러 가지 작업을 수행할 수 있습니다.

 

이건 ChatGPT 답변

Storyboard를 사용하여 UI를 구현하는 방법은 다음과 같습니다.

  1. Xcode에서 새로운 Storyboard 생성: Xcode를 열고, 프로젝트 내에서 Storyboard 파일을 생성합니다.
  2. UIViewController 추가: Storyboard 내에서 UIViewController를 추가합니다. 이는 기본적인 화면 구성을 나타냅니다.
  3. UI 요소 추가: 필요한 UI 요소를 Storyboard에 추가합니다. 예를 들어, UIButton, UILabel, UIImageView 등을 드래그 앤 드롭하여 화면에 배치합니다.
  4. Constraints 추가: UI 요소들 간의 위치와 크기를 조절하기 위해 오토레이아웃 Constraints를 추가합니다. 이를 통해 화면이 다양한 기기와 크기에 대응할 수 있습니다.
  5. IBOutlets 및 IBActions 설정: UI 요소들을 ViewController 클래스에 연결하기 위해 IBOutlets(화면 요소와 코드 연결) 및 IBActions(화면 요소의 이벤트 처리)를 설정합니다.
  6. ViewController 코드 작성: UIViewController 클래스를 생성하고, Storyboard에서 추가한 UI 요소들과의 상호작용을 구현하기 위한 코드를 작성합니다.

Storyboard를 사용하면 UI를 시각적으로 설계하고, 요소들 간의 관계를 쉽게 파악할 수 있습니다. 또한, 코드와의 연결을 통해 UI 요소에 대한 작업을 보다 쉽게 처리할 수 있습니다.

 

면접 방식 답변

"Storyboard를 이용한 UI 구현 방법은 Xcode에서 시각적으로 화면을 디자인하고, 필요한 UI 요소들을 추가하고 배치하는 방식입니다. 먼저 Xcode에서 Storyboard 파일을 생성하고, 그 안에 UIViewController를 추가하여 기본적인 화면을 구성합니다. 이후에는 드래그 앤 드롭을 통해 필요한 UI 요소들을 추가하고, Constraints를 설정하여 화면의 크기와 위치를 조절합니다. 또한, UI 요소들을 코드와 연결하기 위해 IBOutlets와 IBActions를 설정하고, 이를 통해 화면 요소들에 대한 작업을 쉽게 처리할 수 있습니다. Storyboard를 사용함으로써 UI를 시각적으로 구현하고, 코드와의 연결을 통해 보다 효율적으로 작업할 수 있습니다."

 

수정

Q1. Storyboard를 이용해 UI를 구현하는 방법을 설명해 주세요.

A : Storyboard에 UIViewController를 생성해서 필요한 UI 요소들을 드래그&드롭하여 시각적으로 화면을 디자인하고, 요소들을 추가하고, 배치합니다. 추가한 요소들은 Constraints를 설정하여 화면의 크기와 위치를 조절합니다.

스토리보드에서 UI 요소들은 IBOulet, IBAction을 통해 ViewController 클래스와 연결하여 여러 가지 작업을 쉽게 처리할 수 있습니다. 스토리보드를 사용하면 UI를 시각적으로 구현하고, 코드와의 연결을 통해 보다 효율적으로 작업할 수 있습니다.

 


 

UICollectionView

 

출처 : https://www.pinterest.co.kr/pin/8514686782199734/

 

이렇게 생긴 컬렉션 뷰를 만들어보자!

 

* 코드에서 뷰의 Constraints를 설정해 줄 때 background에 색을 입혀서 맞추면 편하다!

버튼이 좀 더 컸으면 좋겠는데,, 그건 나중에 설정해 보자!


 

이제 단어장을 추가하는 페이지를 만들어보려고 하는데,,

아무래도 코드를 세분화하니까 버튼 클릭 시 delegate를 사용해서 페이지를 이동해야 하는 것 같다..!

 

지금 상황을 정리해 보면

UIView에 버튼이 있고, 이 View를 ViewController에 delegate로 해서  버튼 클릭 시 present로 화면 올리는 기능을 추가하려고 한다!

 

1. 프로토콜 생성

    ㄴ 버튼 탭 액션을 처리하기 위한 프로토콜

protocol AddVocaBookHeaderViewDelegate: AnyObject {
    func didTapPlusButton()
}

 

2. Delegate 속성 추가

class AddVocaBookHeaderView: UIView {
    
    weak var delegate: AddVocaBookHeaderViewDelegate?
    
    // 기타 코드 생략...
    
    @objc func plusButtonTapped(_ sender: UIButton) {
        delegate?.didTapPlusButton()
    }
}

 

3. ViewController에 Delegate 구현

class AddVocaBookViewController: UIViewController, AddVocaBookHeaderViewDelegate {

    let headerView = AddVocaBookHeaderView()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        headerView.delegate = self // delegate 설정
    }
    
    // 기타 코드 생략...
    
    // MARK: - AddVocaBookHeaderViewDelegate
    func didTapPlusButton() {
        // 버튼 탭 액션 처리 및 화면 이동 코드 작성
        let destinationVC = YourDestinationViewController()
        navigationController?.pushViewController(destinationVC, animated: true)
    }
}

 

 

 


 

버튼의 이미지 클릭 시 액션이 실행되지 않는 문제 발생

 

Button의 bottom을 안 잡아줘서...