Skip to content

[IDLE-175] 센터유저 상태에 따른 화면 분기작업 기본 세팅 #26

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jul 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//
// RootFeatureDependency.swift
// DependencyPlugin
//
// Created by 최준영 on 6/21/24.
//

import ProjectDescription

public extension ModuleDependency.Presentation {

static let RootFeature: TargetDependency = .project(target: "RootFeature", path: .relativeToRoot("Projects/Presentation/Feature/Root"))
}
1 change: 1 addition & 0 deletions project/Projects/App/Project.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ let project = Project(

// Presentation
D.Presentation.PresentationCore,
D.Presentation.RootFeature,
D.Presentation.AuthFeature,

// Domain
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
//
// CenterMainCoordinator.swift
// Idle-iOS
//
// Created by choijunios on 7/25/24.
//

import UIKit
import DSKit
import PresentationCore
import RootFeature

class CenterMainCoordinator: ParentCoordinator {
var childCoordinators: [Coordinator] = []

var parent: ParentCoordinator?

var navigationController: UINavigationController
let injector: Injector

init(dependency: Dependency) {
self.navigationController = dependency.navigationController
self.injector = dependency.injector
}

func start() {

let tabInfo = CenterMainScreen.allCases.map { tab in

TabBarInfo(
viewController: createNavForTab(tab: tab),
tabBarItem: .init(
name: tab.name
)
)
}

let tabController = IdleTabBar()
tabController.setViewControllers(info: tabInfo)
tabController.selectedIndex = 0

navigationController.pushViewController(tabController, animated: false)
}

// #1. Tab별 네비게이션 컨트롤러 생성
func createNavForTab(tab: CenterMainScreen) -> UINavigationController {

let tabNavController = UINavigationController()
tabNavController.setNavigationBarHidden(false, animated: false)

startTabCoordinator(
tab: tab,
navigationController: tabNavController
)

return tabNavController
}
// #2. 생성한 컨트롤러를 각 탭별 Coordinator에 전달
func startTabCoordinator(tab: CenterMainScreen, navigationController: UINavigationController) {

var coordinator: ChildCoordinator!

switch tab {
case .recruitmentManage:
coordinator = RecruitmentManagementCoordinator(
navigationController: navigationController
)
case .setting:
coordinator = SettingCoordinator(
navigationController: navigationController
)
}
addChildCoordinator(coordinator)

// 코디네이터들을 실행
coordinator.start()
}
}

// MARK: Center 탭의 구성요소들
enum CenterMainScreen: Int, CaseIterable {
case recruitmentManage = 0
case setting = 1

var name: String {
switch self {
case .recruitmentManage:
"채용"
case .setting:
"설정"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
//
// WorkerMainCoordinator.swift
// Idle-iOS
//
// Created by choijunios on 7/25/24.
//

import UIKit
import DSKit
import PresentationCore
import RootFeature

class WorkerMainCoordinator: ParentCoordinator {
var childCoordinators: [Coordinator] = []

var parent: ParentCoordinator?

var navigationController: UINavigationController
let injector: Injector

init(dependency: Dependency) {
self.navigationController = dependency.navigationController
self.injector = dependency.injector
}

func start() {

let tabInfo = WorkerMainScreen.allCases.map { tab in

TabBarInfo(
viewController: createNavForTab(tab: tab),
tabBarItem: .init(
name: tab.name
)
)
}

let tabController = IdleTabBar()
tabController.setViewControllers(info: tabInfo)
tabController.selectedIndex = 0

navigationController.pushViewController(tabController, animated: false)
}

// #1. Tab별 네비게이션 컨트롤러 생성
func createNavForTab(tab: WorkerMainScreen) -> UINavigationController {

let tabNavController = UINavigationController()
tabNavController.setNavigationBarHidden(false, animated: false)

startTabCoordinator(
tab: tab,
navigationController: tabNavController
)

return tabNavController
}
// #2. 생성한 컨트롤러를 각 탭별 Coordinator에 전달
func startTabCoordinator(tab: WorkerMainScreen, navigationController: UINavigationController) {

var coordinator: ChildCoordinator!

switch tab {
case .recruitmentBoard:
coordinator = RecruitmentBoardCoordinator(
navigationController: navigationController
)
case .applyManagement:
coordinator = ApplyManagementCoordinator(
navigationController: navigationController
)
case .setting:
coordinator = SettingCoordinator(
navigationController: navigationController
)
}
addChildCoordinator(coordinator)

// 코디네이터들을 실행
coordinator.start()
}
}

// MARK: Worker 탭의 구성요소들
enum WorkerMainScreen: Int, CaseIterable {
case recruitmentBoard = 0
case applyManagement = 1
case setting = 2

var name: String {
switch self {
case .recruitmentBoard:
"채용"
case .applyManagement:
"공고관리"
case .setting:
"설정"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,36 @@ extension RootCoordinator {

authCoordinator.start()
}

/// 요양보호사 메인화면을 실행합니다.
func workerMain() {

let coordinator = WorkerMainCoordinator(
dependency: .init(
navigationController: navigationController,
injector: injector
)
)
coordinator.parent = self

addChildCoordinator(coordinator)

coordinator.start()
}

/// 센터 메인화면을 시작합니다.
func centerMain() {

let coordinator = CenterMainCoordinator(
dependency: .init(
navigationController: navigationController,
injector: injector
)
)
coordinator.parent = self

addChildCoordinator(coordinator)

coordinator.start()
}
}
12 changes: 2 additions & 10 deletions project/Projects/App/Sources/RootCoordinator/RootCoordinator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,9 @@ class RootCoordinator: ParentCoordinator {
}

func start() {
navigationController.setNavigationBarHidden(true, animated: false)

navigationController.navigationBar.isHidden = true

let coordinator = TestMainTabBarCoodinator(
navigationController: navigationController
)

coordinator.parent = self
addChildCoordinator(coordinator)

coordinator.start()
centerMain()
}

func popViewController() {
Expand Down

This file was deleted.

Loading