Skip to content

Commit

Permalink
[#12] TabsViewController에서 탭을 추가할 수 있도록 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
chongin12 committed Feb 1, 2025
1 parent 90f6624 commit 7ee1587
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 7 deletions.
31 changes: 25 additions & 6 deletions Handy/Handy-Storybook/Atom/TabsViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,19 @@ import Handy
import UIKit

final class TabsViewController: BaseViewController {
let tabs: [(title: String, viewController: UIViewController)]
var tabs: [(title: String, viewController: UIViewController)]

private let handyTabs: HandyTabs = {
let tabs = HandyTabs(sizeType: .small)
return tabs
}()

private let addingTabButton: HandyFab = {
let button = HandyFab()
button.iconImage = .add
return button
}()

init(_ tabCount: Int) {
self.tabs = [
{
Expand Down Expand Up @@ -58,23 +70,30 @@ final class TabsViewController: BaseViewController {

override func viewDidLoad() {
super.viewDidLoad()
addingTabButton.addTarget(self, action: #selector(addingTabButtonDidTap(_:)), for: .touchUpInside)
self.handyTabs.tabs = self.tabs
}

private let handyTabs: HandyTabs = {
let tabs = HandyTabs(sizeType: .small)
return tabs
}()
@objc private func addingTabButtonDidTap(_ sender: UIButton) {
let randomViewController = UIViewController()
randomViewController.view.backgroundColor = UIColor.init(red: .random(in: 0...1), green: .random(in: 0...1), blue: .random(in: 0...1), alpha: 1)
handyTabs.tabs.append(("newTab!!", randomViewController))
}

override func setViewHierarchies() {
self.addChild(handyTabs)
self.view.addSubview(handyTabs.view)
self.view.addSubview(addingTabButton)
}

override func setViewLayouts() {
handyTabs.view.snp.makeConstraints {
$0.edges.equalTo(self.view.safeAreaLayoutGuide)
}

addingTabButton.snp.makeConstraints {
$0.trailing.bottom.equalTo(self.view.safeAreaLayoutGuide).inset(32)
$0.width.height.equalTo(100)
}
}
}

4 changes: 3 additions & 1 deletion Handy/Handy/Source/Atom/HandyTabs/HandyTabs.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,15 @@ open class HandyTabs: UIViewController {
selectedIndex = tabs.count - 1
}

tabsHeader.reloadData() // reload 후 layout을 수정해야 정상적으로 작동합니다.

updateTabsHeaderLayout()
}
}

/// 현재 선택되어있는 탭의 인덱스입니다. [0] 부터 시작합니다.
/// * `nil`인 경우 : 탭이 0개이거나 초기 상태입니다.
open var selectedIndex: Int? {
open var selectedIndex: Int? = nil {
didSet {
if let oldValue {
let previousViewController = tabs[oldValue].viewController
Expand Down

0 comments on commit 7ee1587

Please sign in to comment.