-
iOS [Swift] - WatchOS 화면 Push & 값 전달하기iOS Develop 2022. 3. 21. 14:45반응형
이번 포스팅에서는 WatchOS 공부를 처음 시작해보면서 얻은 정보를 작성하려고 한다!...
watch 개발은 익숙치 않아 이렇게 간단한거라도 적어보면서 공부해보려 한돠..
일단, 계획은 이렇다.
1. +, - 버튼을 통해 숫자를 조절해준다.
2. 조절한 숫자를 다음 페이지로 넘어가 적용해준다.
엄청나게 간단한 구조지만, 이 마저도 쉽게 깨우치지 못했다..ㅎ 쉽지않어..
암튼 시작!

Interface Controller 디자인 첫 시작 화면은 이러하다.
워치는 AutoLayout을 어떻게 적용하나 했는데, 그룹으로 묶고 그 안에서 비율 조절을 하는 듯 하다..!!
(이 것도 아직 확실한 것은 아니지만 내 느낌상 ㅋ. 아 뭐)
알아보기 쉽게 계층 구조로 보자면..!

Interface Controller 계층 구조 1) Horizontal Group으로 플러스 마이너스 버튼과 라벨을 묶어준다. (Embed In에서 설정할 수 있음)
2) 그 안에서 각 버튼의 비율은 0.2, 라벨의 비율은 0.6으로 설정하여 총 합 1을 만들어줬다. (각 컴포넌트들을 선택하면 오른쪽 inspector의 size에서 Width를 Relative to Container로 설정하고 비율 조절을 할 수 있다.)
3) 다시 Horizontal Group과 다음 페이지로 이동하는 버튼을 Vertical Group으로 묶어주었다. 그리고 그 사이 간격을 Spacing으로 띄어주었다.
디자인은 얼추 끝냈고, 맞다 Second Interface Controller에서는 그냥 Label 하나만 만들어주었따. (앞선 페이지에서 설정한 숫자를 받아서 보여주기 위함)
코드를 보면, 숫자를 올리고 내리는건 아이폰 개발과 다른 부분이 없기에 그냥 넘어간당.
중요한건 여기!
@IBAction func btn_Next() { pushController(withName: "secondIC", context: count) }아이폰 개발에서는 Navigation이니 뭐기해서 복잡하게 넘어갔지만, watchOS 개발에서는 그냥 pushController()해주면 된단다.
withName은 Second Interface Controller의 Identifier!!
(※ 맞다. WatchOS 개발할 때는, 화면에 맞는 클래스를 생성할 때 UIViewController가 아니라
WKInterfaceController를 상속받아야 하더라. 당연하지만 허허.. 아 뭐)
그리고 또 다른점!! watch에서는 context를 넘겨줄 수 있다!!! 이게 꽤나 좋은 듯!
나는 첫 페이지에서 숫자를 조절하고 그 숫자를 넘겨줄 것이기 때문에 count를 넣어줬다!! (참고로 context 타입은 Any? 이다)
그럼 화면이 전환되고 context를 받는 부분으로 넘어가보자!
// MARK: - SecondInterfaceController override func awake(withContext context: Any?) { super.awake(withContext: context) guard let count = context as? Int else { return } lbl_Txt.setText(String(count)) }앞서 context에 담아 보내준 값을 guard let 구문을 통해 뜯고 값의 유무를 판단해주었다.
값이 있다면, 우리의 label에 입력해줘라!!!
OK 끝!!!! 이번 포스팅도 봐주셔서 감사함다!!!
동작 영상
마치며
- 일단 오늘 watchOS 앱을 만들기 위해 호기롭게 덤벼봤는데 생각보다 쉽지 않은 것 같고 자료도 많지 않은 것 같다..
- 그렇기 때문에 간단한거라도 정보를 얻게 되면 블로그에 자주 포스팅하여 나도 도움되고 다른 사람도 도움이 되면 좋겠따!!
도움
- https://www.informit.com/articles/article.aspx?p=2421568&seqNum=2
- https://velog.io/@sso0022/watchOS-%EC%95%A0%ED%94%8C%EC%9B%8C%EC%B9%98-%EC%95%B1-%EB%A7%8C%EB%93%A4%EC%96%B4%EB%B3%B4%EA%B8%B0
Navigating between Interface Controllers | Apple Watch Interface Navigation | InformIT
Home > Articles > Operating Systems, Server > MAC OS X/Other 📄 Contents ␡ Interface Controllers and Storyboard Navigating between Interface Controllers Summary ⎙ Print + Share This This chapter is from the book Navigating between Interface Contr
www.informit.com
'iOS Develop' 카테고리의 다른 글
iOS [Swift] - HealthKit Query 정리 (0) 2022.03.29 iOS [Swift] - WatchOS HealthKit Background (0) 2022.03.23 iOS [Swift] - NotificationCenter 사용하기 (0) 2022.03.20 iOS [Swift] - Toast Message (0) 2022.03.17 iOS [Swift] - Delegate Pattern (델리게이트 패턴) (0) 2022.03.09