<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Navigation on Kelly Dev</title><link>https://kelly-chui.github.io/tags/navigation/</link><description>Recent content in Navigation on Kelly Dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 23 Jul 2026 22:36:54 +0900</lastBuildDate><atom:link href="https://kelly-chui.github.io/tags/navigation/index.xml" rel="self" type="application/rss+xml"/><item><title>SwiftUI. The Swiftui Cookbook for Navigation - WWDC22</title><link>https://kelly-chui.github.io/posts/wwdc-swiftui-cookbook-for-navigation/</link><pubDate>Thu, 23 Jul 2026 22:36:54 +0900</pubDate><guid>https://kelly-chui.github.io/posts/wwdc-swiftui-cookbook-for-navigation/</guid><description>&lt;h2 id="the-swiftui-cookbook-for-navigation"&gt;The SwiftUI cookbook for navigation&lt;/h2&gt;
&lt;p&gt;SwiftUI의 새로운 내비게이션 API를 발표한 WWDC 세션을 정리했다. 이 내비게이션 API는 각각의 &lt;code&gt;NavigationLink&lt;/code&gt;가 관리하는 대신, 스택 전체의 상태를 데이터로 표현하고 직접 조작할 수 있게 만든다.&lt;/p&gt;
&lt;p&gt;이 구조를 사용하면 버튼을 눌러 이동하는 기본적인 내비게이션뿐만 아니라, 딥 링크나 특정 화면으로 바로 이동하기, 루트 화면으로 돌아가기, 현재 내비게이션 상태 저장까지 같은 모델로 처리할 수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;New naviation API: 새로운 Data-driven 내비게이션 API&lt;/li&gt;
&lt;li&gt;Recipes for navigation: 탐색을 프로그래밍 방식으로 완전히 제어하기&lt;/li&gt;
&lt;li&gt;Persistent state: 새로운 API를 이용하여 앱의 내비게이션 상태를 유지하기&lt;/li&gt;
&lt;/ul&gt;
&lt;aside class="callout" data-callout="note"&gt;
&lt;div class="callout__header"&gt;&lt;span class="callout__icon" aria-hidden="true"&gt;i&lt;/span&gt;&lt;span class="callout__title"&gt;갑자기 프로그래밍 방식?&lt;/span&gt;
&lt;/div&gt;
&lt;div class="callout__body"&gt;&lt;p&gt;SwiftUI는 처음부터 코드로 UI를 작성하는 프레임워크였기 때문에, 기존 &lt;code&gt;NavigationView&lt;/code&gt;도 &lt;code&gt;isActive&lt;/code&gt;나 &lt;code&gt;selection&lt;/code&gt;을 이용해 화면을 프로그래밍 방식으로 전환할 수 있었다.&lt;/p&gt;</description></item><item><title>UIKit. 화면 전환 방식</title><link>https://kelly-chui.github.io/posts/ios-uikit-screen-transitions/</link><pubDate>Wed, 21 Aug 2024 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/ios-uikit-screen-transitions/</guid><description>&lt;p&gt;UIKit에서는 화면을 전환하는 방법이 여러 가지 있지만, 실제로는 상황에 따라 적절한 방식을 선택하면 된다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;화면을 계층적으로 이동한다 → &lt;strong&gt;Show&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Split View의 Detail 화면을 변경한다 → &lt;strong&gt;Show Detail&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;현재 화면 위에 독립적인 화면을 띄운다 → &lt;strong&gt;Present Modally&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;큰 화면에서는 팝오버, 작은 화면에서는 모달로 표시한다 → &lt;strong&gt;Present as Popover&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이번 글에서는 각각의 방식이 어떤 상황에서 사용되는지 간단히 정리해 보려고 한다.&lt;/p&gt;
&lt;h2 id="화면-전환-방식"&gt;화면 전환 방식&lt;/h2&gt;
&lt;h3 id="show"&gt;Show&lt;/h3&gt;
&lt;div class="code-theme-github"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-swift" data-lang="swift"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;show&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;_&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="p"&gt;:)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;내비게이션 컨트롤러를 사용하는 경우 새로운 뷰 컨트롤러를 &lt;strong&gt;Push&lt;/strong&gt;하여 화면을 전환한다. 사용자가 계층 구조를 따라 이동하는 대부분의 화면 전환이 여기에 해당한다.&lt;/p&gt;</description></item><item><title>SwiftUI Tutorials. Building Lists and Navigation</title><link>https://kelly-chui.github.io/posts/swiftui-tutorials-02-building-lists-and-navigation/</link><pubDate>Tue, 25 Jun 2024 00:00:00 +0000</pubDate><guid>https://kelly-chui.github.io/posts/swiftui-tutorials-02-building-lists-and-navigation/</guid><description>&lt;p&gt;사용자가 전체 랜드마크 목록을 보고 각 위치에 대한 세부 정보를 볼 수 있는 방법을 제공해야 한다.&lt;/p&gt;
&lt;p&gt;모든 랜드마크에 대한 정보를 표시할 수 있는 뷰를 생성하고 사용자가 탭하여 랜드마크에 대한 디테일 뷰를 볼 수 있는 스크롤 목록을 동적으로 생성한다. UI를 미세 조정하고 싶으면 Xcode를 사용하여 다양한 장치 크기에서 미리보기를 렌더링 하면 된다.&lt;/p&gt;
&lt;h2 id="section-1-create-a-landmark-model"&gt;Section 1. Create a landmark model&lt;/h2&gt;
&lt;p&gt;첫 번째 튜토리얼에선, 모든 정보들을 커스텀 뷰에 하드코딩했다. 이제는 뷰로 전달할 수 있는 데이터를 저장하는 모델을 만들 것이다.&lt;/p&gt;</description></item></channel></rss>