# modality 방식
- 스토리보드 ViewController의 indentifer Inspector로 들어가서 identifier를 기입한다. (본인으로 지정된 class명으로하면 구별이 쉽다)
- 첫번째 ViewController class내에서 이동하고자하는 secondViewController의 인스턴스를 생성하는 함수를 만든다
- 실행을한다. (만약 버튼을 클릭시 이동시키고 싶다면 버튼을 끌어와 @IBAction 함수내에 코드를 구현해도 좋을것같다.)
// firstViewController에서 작성한 코드이다.
func moveSecondViewController() {
guard let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "secondViewController") else { return }
self.present(secondViewController, animated: true, completion: nil)
}
# navigation 방식
위와 동일
// firstViewController에서 작성한 코드이다.
func moveSecondViewController() {
guard let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "secondViewController") else { return }
navigationController?.pushViewController(secondViewController, animated: true)
}
segue방식을 통해 데이터 공유
- 스토리보드상에서 firstViewController와 secondViewController을 segue로 연결을 해준다.
- segue의 identifier를 적어준다.
- override된 prepare메서드를 호출한다.
- 스토리보드에서 지정해놓은 segue의 identifier가 맞는지 먼저 확인한다.
- navigationViewController는 두개의 스토리보드로 연결이되어있음 고로 먼저 navigationController인지를 확인해주고 다운캐스팅을하여 바인딩하여 값을 상수에 담는다.
- 마지막으로 이동하고자 하는 navigationController가 topView인지 확인한다.(stack구조라서 맨마지막에 나오는 화면이 topView임)
- secondViewController의 인스턴스를 생성하고 그 class내에 있는 프로퍼티에 접근하여 firstViewController의 프로퍼티값을 할당하는것이다.
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard segue.identifier == "secondViewController" else { return }
if let navigationController = segue.destination as? UINavigationController,
let secondViewController = navigationController.topViewController as? secondViewController {
secondViewController.strawberryCount = self.strawberryStockLabel.text ?? ""
}
}
Alert구현
- UIAlertController(title, message, preferredStyle)을 선택하는 인스턴스를 생성한다.
- Alert 띄울때 누를 Action 버튼인스턴스를 생성해준다.
- AlertAction인스턴스를 UIAlertController인스턴스에 할당해준다.
- present()메서드내 UIAlertController인스턴스를 추가해준다.
func showAlert() {
let alertViewController =
UIAlertController(title: "투자손실"
message: "현재마이너스 -30%입니다 손절하시겠습니까 ?",
preferredStyle: .alert)
let okAction = UIAlertAction(title: "예",
style: .default) { _ in
//여기에는 얼럿버튼에서 '예'버튼을 누를시 실행될 구현부이다.
self.moveSecondViewController()
}
let noAction = UIAlertAction(title: "아니오",
style: .default, handler: nil)
// 구현한 UIAlertAction인스턴스를 add추가한다. (최대 2개까지만 가능)
alertViewController.addAction(okAction)
alertViewController.addAction(noAction)
// 만들어놓은 AlertViewController인스턴스를 전달해준다.
present(alertViewController, animated: true, completion: nil)
}
'야곰커리어캠프_TIL' 카테고리의 다른 글
20220314 / D21 / UnitTest & TDD (0) | 2022.03.15 |
---|---|
20220303 / D15 / 노티피케이션센터 예제코드 만들기 및 viewDidLoad에서 super메서드를 호출해야하는 이유 (0) | 2022.03.04 |
20220224 / D12 / KVO와 Notification의 장단점 및 Init과 self에대한 궁금증 (0) | 2022.02.25 |
20220222 / D11 / auto 레이아웃 맛보기... (0) | 2022.02.23 |
20220215 / D9 / 재귀함수와 반복문의 차이 (0) | 2022.02.16 |