forXifLess / LinkNavigator

🌊 Easy & Powerful navigation library in SwiftUI
Other
382 stars 27 forks source link

feat: Navigation Title 표출 지연 현상 해결 방법 추가 #18

Closed zooxop closed 12 months ago

zooxop commented 1 year ago

이슈

안녕하세요. 🙂

.next 메서드를 통해 다음 View가 호출될 때, 아래와 같이 navigationTitle 이 반박자 느리게 표시되는 문제를 겪었습니다. (Xcode 14.3, iOS 16.0 later)

before

위 화면은 SwiftUI의 .navigationTitle() modifier를 호출되는 View 내부에서 선언한 경우입니다.

struct InformationView: View {

  var body: some View {
    VStack {
      // some codes
    }
    .navigationTitle("이용 안내")
  }
}

수정

해결 방법을 찾아본 결과, WrappingController 의 생성자에서 만든 UIHostingController 객체에 직접 .title 속성을 지정해주는 방법으로 해결을 할 수 있었습니다.

https://stackoverflow.com/questions/74247582/navigation-bar-title-appears-with-delay-in-mixed-uikit-and-swiftui-project

public final class WrappingController<Content: View>: UIHostingController<Content>, MatchPathUsable {
  ...
  ...
  public init(  // ✅ Overloading
    matchPath: String,
    title: String,  // ✅
    @ViewBuilder content: () -> Content)
  {
    self.matchPath = matchPath
    super.init(rootView: content())
    super.title = title  // ✅
  }
}
struct InformationRouteBuilder: RouteBuilder {
    var matchPath: String { "information" }

    var build: (LinkNavigatorType, [String : String], DependencyType) -> MatchingViewController? {
        { navigator, items, dependency in
            return WrappingController(
                matchPath: matchPath,
                title: "이용 안내")  // ✅
            {
                InformationView(navigator: navigator)
            }
        }
    }
}

위의 WrappingController.swift 에서, 오버로딩을 통해 새로 만든 생성자를 사용하면 아래와 같이 navigationTitle이 딜레이 없이 나타나는 것을 확인하였습니다.

after

확인 부탁드립니다. ^^

interactord commented 1 year ago

죄송해요.. 늦게 PR을 확인했어요...

좋은 피드백 주셔서 너무 감사합니다.

zooxop commented 12 months ago

@interactord 안녕하세요 😄 시간이 좀 오래 지나긴 했지만, 해당 PR이 Close된 이유에 대한 설명을 부탁드려도 될까요?!

현재 기준 WrappingController.swift 파일 코드를 확인해보니, 기존부터 생성자 매개변수로 전달하던 matchPath 값을 활용하도록 수정하신것으로 확인했습니다.

제가 제안드린 방식(Overloading을 통한 생성자 형식 추가)이 LinkNavigator가 지향하는 방향과 달라서 그런것인지, 아니면 다른 문제가 있었던 것인지 궁금합니다 ^^

interactord commented 12 months ago

PR관련 추가적인 의견에 대한 3주간 피드백이 없어서 닫았습니다.

추가적인 의견에 대한 코멘트를 달아주신다면 다시 오픈하도록 하겠습니다 ^^

zooxop commented 12 months ago

@interactord 추가적인 의견 이라는게 어떤것을 말씀하시는것인가요?

죄송해요.. 늦게 PR을 확인했어요...

좋은 피드백 주셔서 너무 감사합니다.

저한테는 위 코멘트 말고는 다른 내용이 보이지 않습니다..!

혹시 코드에 리뷰를 달아주신것이라면.. 현재 저한테는 아무런 코드 리뷰가 보이지 않습니다 ..^^

image
interactord commented 12 months ago

@interactord 추가적인 의견 이라는게 어떤것을 말씀하시는것인가요?

죄송해요.. 늦게 PR을 확인했어요... 좋은 피드백 주셔서 너무 감사합니다.

저한테는 위 코멘트 말고는 다른 내용이 보이지 않습니다..!

혹시 코드에 리뷰를 달아주신것이라면.. 현재 저한테는 아무런 코드 리뷰가 보이지 않습니다 ..^^ image

제가 코드 리뷰를 팬딩처리했었군요... 죄송합니다. 제 실수 입니다...

리뷰 신청 올렸습니다. 확인부탁드려요

zooxop commented 12 months ago

제가 코드 리뷰를 팬딩처리했었군요... 죄송합니다. 제 실수 입니다...

리뷰 신청 올렸습니다. 확인부탁드려요

아닙니다 괜찮습니다 😅 저도 실수하기 너무 쉬운 부분이라고 생각합니다 ㅎㅎ. 수정사항 반영하였으니, 확인 부탁드립니다 ~!

interactord commented 12 months ago

확인했습니다.. Feature 브랜치에도 적용해야겠군요... 소중한 PR 감사합니다