iOS 개발 시 자주 쓰이는 구문 정리

Joohyun·2022년 4월 27일
0

Segue

Segue를 통해 view 이동 시 값도 함께 이동

// first view controller
var property: [Int] // 이동시킬 값
    
func goNextView() {
	performSegue(withIdentifier: "Second", sender: nil)
}
    
// performSegue를 수행할 때, SecondViewController(coder:) 가 아닌 SecondViewController(coder:property:)를 통해 초기화
// Segue와 연결
// 값 넘겨줌
@IBSegueAction func showResults(_ coder: NSCoder) -> SecondViewController? {
	return SecondViewController(coder: coder, property: property)
}
// second view controller
var property: [Int] // 받은 값 저장
    
// coder: UIKit에 의해 제공, Storyboard에 정의된 정보로부터 view controller를 초기화하는데 사용
// 값 받음
init?(coder: NSCoder, property: [Int]) {
	self.property = property
    super.init(coder: coder)
}
    
// custom initializer를 만들 때, superclass에서 정의한 required initializer를 넣어야 한다.
required init?(coder: NSCoder) {
	fatalError("init(coder:) has not been implemented")
}

맨 처음 View로 되돌아가기

// first view controller에 적은 뒤
// 마지막 view의 버튼을 exit에 연결 한 뒤 팝업에서 해당 메서드 클릭
@IBAction func unwindToFirstView(segue: UIStoryboardSegue) {
}

Navigation item

Back 버튼 숨김처리

navigationItem.hidesBackButton = true

Button

여러줄 적은 뒤 가운데 정렬

button.setTitle("title ~~", for: .normal)
// 안하면 이상하게 정렬됨
button.titleLabel?.textAlignment = .center

Scroll View

키보드 나타나도 입력부분 가려지지 않도록 처리

@IBOutlet var scrollView: UIScrollView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        registerForKeyboardNotifications()
    }
    
    func registerForKeyboardNotifications() {
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(keyboardWasShown(_:)),
            name: UIResponder.keyboardDidShowNotification,
            object: nil
        )
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(keyboardWillBeHidden(_:)),
            name: UIResponder.keyboardWillHideNotification,
            object: nil
        )
    }
    
    @objc func keyboardWasShown(_ notificiation: NSNotification) {
        guard let info = notificiation.userInfo,
              let keyboardFrameValue =
                info[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue else { return }
        
        let keyboardFrame = keyboardFrameValue.cgRectValue
        let keyboardSize = keyboardFrame.size
        
        // 키보드의 길이만큼 content area의 padding을 더해 content를 위로 끌어 올린다.
        // contentInset: scroll view content의 buffer area
        let contentInsets = UIEdgeInsets(top: 0.0, left: 0.0,
                                         bottom: keyboardSize.height, right: 0.0)
        scrollView.contentInset = contentInsets
        
        // scroll indicator(스크롤 바)가 키보드에 가려지지 않도록 위로 끌어 올린다.
        scrollView.scrollIndicatorInsets = contentInsets
    }
    
    @objc func keyboardWillBeHidden(_ notification:
                                    NSNotification) {
        let contentInsets = UIEdgeInsets.zero
        scrollView.contentInset = contentInsets
        scrollView.scrollIndicatorInsets = contentInsets
    }
profile
IOS Developer

0개의 댓글