Skip to content

Commit

Permalink
feat/#162 내 모임 리스트 UI 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
mmaybei committed Jul 12, 2024
1 parent ed16f79 commit e32ca9a
Show file tree
Hide file tree
Showing 13 changed files with 342 additions and 59 deletions.
30 changes: 23 additions & 7 deletions KkuMulKum.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@
78B9286E2C29402C006D9942 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78B9286D2C29402C006D9942 /* SceneDelegate.swift */; };
78B928752C29402E006D9942 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 78B928742C29402E006D9942 /* Assets.xcassets */; };
78B928782C29402E006D9942 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 78B928762C29402E006D9942 /* LaunchScreen.storyboard */; };
A3DD9C232C4112EB00E58A13 /* MeetingListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3DD9C222C4112EB00E58A13 /* MeetingListView.swift */; };
A3DD9C252C4133CD00E58A13 /* MeetingTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3DD9C242C4133CD00E58A13 /* MeetingTableViewCell.swift */; };
A3DD9C272C41383200E58A13 /* MeetingDummyModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3DD9C262C41383200E58A13 /* MeetingDummyModel.swift */; };
A3DD9C292C41653700E58A13 /* MeetingListHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3DD9C282C41653600E58A13 /* MeetingListHeader.swift */; };
A3FB184D2C3BF45F001483E5 /* MakeMeetingsRequestModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3FB184C2C3BF45F001483E5 /* MakeMeetingsRequestModel.swift */; };
A3FB184F2C3BF4BC001483E5 /* MakeMeetingsResponseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3FB184E2C3BF4BB001483E5 /* MakeMeetingsResponseModel.swift */; };
A3FB18512C3BF531001483E5 /* RegisterMeetingsResponseModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3FB18502C3BF531001483E5 /* RegisterMeetingsResponseModel.swift */; };
Expand All @@ -83,7 +87,7 @@
DD931B762C3DC16100526452 /* PromiseInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD931B752C3DC16100526452 /* PromiseInfoView.swift */; };
DDA2EE732C385EB9007C6059 /* MainTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDA2EE722C385EB9007C6059 /* MainTabBarController.swift */; };
DDA2EE752C385FB1007C6059 /* HomeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDA2EE742C385FB1007C6059 /* HomeViewController.swift */; };
DDA2EE772C385FC3007C6059 /* GroupListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDA2EE762C385FC3007C6059 /* GroupListViewController.swift */; };
DDA2EE772C385FC3007C6059 /* MeetingListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDA2EE762C385FC3007C6059 /* MeetingListViewController.swift */; };
DDAF1C7C2C3D5B86008A37D3 /* RxCocoa in Frameworks */ = {isa = PBXBuildFile; productRef = DDAF1C7B2C3D5B86008A37D3 /* RxCocoa */; };
DDAF1C7E2C3D5B86008A37D3 /* RxRelay in Frameworks */ = {isa = PBXBuildFile; productRef = DDAF1C7D2C3D5B86008A37D3 /* RxRelay */; };
DDAF1C812C3D5BD5008A37D3 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = DDAF1C802C3D5BD5008A37D3 /* Kingfisher */; };
Expand Down Expand Up @@ -171,6 +175,10 @@
78B928742C29402E006D9942 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
78B928772C29402E006D9942 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
78B928792C29402E006D9942 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
A3DD9C222C4112EB00E58A13 /* MeetingListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingListView.swift; sourceTree = "<group>"; };
A3DD9C242C4133CD00E58A13 /* MeetingTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingTableViewCell.swift; sourceTree = "<group>"; };
A3DD9C262C41383200E58A13 /* MeetingDummyModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingDummyModel.swift; sourceTree = "<group>"; };
A3DD9C282C41653600E58A13 /* MeetingListHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingListHeader.swift; sourceTree = "<group>"; };
A3FB184C2C3BF45F001483E5 /* MakeMeetingsRequestModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MakeMeetingsRequestModel.swift; sourceTree = "<group>"; };
A3FB184E2C3BF4BB001483E5 /* MakeMeetingsResponseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MakeMeetingsResponseModel.swift; sourceTree = "<group>"; };
A3FB18502C3BF531001483E5 /* RegisterMeetingsResponseModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RegisterMeetingsResponseModel.swift; sourceTree = "<group>"; };
Expand All @@ -193,7 +201,7 @@
DD931B752C3DC16100526452 /* PromiseInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PromiseInfoView.swift; sourceTree = "<group>"; };
DDA2EE722C385EB9007C6059 /* MainTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabBarController.swift; sourceTree = "<group>"; };
DDA2EE742C385FB1007C6059 /* HomeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewController.swift; sourceTree = "<group>"; };
DDA2EE762C385FC3007C6059 /* GroupListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupListViewController.swift; sourceTree = "<group>"; };
DDA2EE762C385FC3007C6059 /* MeetingListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeetingListViewController.swift; sourceTree = "<group>"; };
DDAF1C832C3D5D19008A37D3 /* ViewModelType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewModelType.swift; sourceTree = "<group>"; };
DDAF1C882C3D6E3D008A37D3 /* ReadyStatusViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReadyStatusViewController.swift; sourceTree = "<group>"; };
DDAF1C892C3D6E3D008A37D3 /* PromiseSegmentedControl.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PromiseSegmentedControl.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -526,12 +534,16 @@
path = Home;
sourceTree = "<group>";
};
DDA2EE7C2C38607F007C6059 /* GroupList */ = {
DDA2EE7C2C38607F007C6059 /* MeetingList */ = {
isa = PBXGroup;
children = (
DDA2EE762C385FC3007C6059 /* GroupListViewController.swift */,
DDA2EE762C385FC3007C6059 /* MeetingListViewController.swift */,
A3DD9C222C4112EB00E58A13 /* MeetingListView.swift */,
A3DD9C242C4133CD00E58A13 /* MeetingTableViewCell.swift */,
A3DD9C262C41383200E58A13 /* MeetingDummyModel.swift */,
A3DD9C282C41653600E58A13 /* MeetingListHeader.swift */,
);
path = GroupList;
path = MeetingList;
sourceTree = "<group>";
};
DDA2EE7E2C3860B2007C6059 /* Core */ = {
Expand Down Expand Up @@ -603,7 +615,7 @@
children = (
DDA2EE7E2C3860B2007C6059 /* Core */,
DDA2EE7B2C386078007C6059 /* Home */,
DDA2EE7C2C38607F007C6059 /* GroupList */,
DDA2EE7C2C38607F007C6059 /* MeetingList */,
DE159D312C406E1600425101 /* MyPage */,
DE6D4D0E2C3F14D80005584B /* MeetingInfo */,
DD865B652C3920F600C351A2 /* Onboarding */,
Expand Down Expand Up @@ -1016,6 +1028,7 @@
789873342C3D1A7B00435E96 /* LoginView.swift in Sources */,
782B40822C3E4925008B0CA7 /* NicknameViewModel.swift in Sources */,
782B406F2C3DBF93008B0CA7 /* ProfileViewController.swift in Sources */,
A3DD9C232C4112EB00E58A13 /* MeetingListView.swift in Sources */,
A3FB18592C3BF77D001483E5 /* MeetingInfoResponseModel.swift in Sources */,
DEA932182C3F180800FDF637 /* MeetingPromisesModel.swift in Sources */,
DE159D342C406E1600425101 /* MyPageEtcSettingView.swift in Sources */,
Expand All @@ -1041,17 +1054,19 @@
DE9E18922C3BCC9D00DB76B4 /* SocialLoginRequestModel.swift in Sources */,
DE254AA82C3118EA00A4015E /* UIView+.swift in Sources */,
DE254AAE2C31193600A4015E /* UIFont+.swift in Sources */,
A3DD9C292C41653700E58A13 /* MeetingListHeader.swift in Sources */,
DE6D4D152C3F14D80005584B /* InvitationCodePopUpViewController.swift in Sources */,
DE9E189A2C3BCCBE00DB76B4 /* UtilsTemp.swift in Sources */,
782B407B2C3E395A008B0CA7 /* WelcomeView.swift in Sources */,
A3DD9C272C41383200E58A13 /* MeetingDummyModel.swift in Sources */,
DD3072142C3BF87A00416D9F /* NearestPromiseResponseModel.swift in Sources */,
782B407F2C3E44B7008B0CA7 /* WelcomeViewModel.swift in Sources */,
DD3072162C3BFE4E00416D9F /* UpcomingPromiseListResponseModel.swift in Sources */,
A3FB18572C3BF704001483E5 /* MeetingListResponseModel.swift in Sources */,
DE254AB22C31197B00A4015E /* UIButton+.swift in Sources */,
DE6D4D162C3F14D80005584B /* MeetingInfoViewController.swift in Sources */,
DE159D322C406E1600425101 /* MyPageAlarmSettingView.swift in Sources */,
DDA2EE772C385FC3007C6059 /* GroupListViewController.swift in Sources */,
DDA2EE772C385FC3007C6059 /* MeetingListViewController.swift in Sources */,
78B9286C2C29402C006D9942 /* AppDelegate.swift in Sources */,
DEBA032F2C3C24F2002ED8F2 /* ModelType.swift in Sources */,
789AD4B52C3C0147002E2688 /* ResissueResponseModel.swift in Sources */,
Expand All @@ -1061,6 +1076,7 @@
DE6D4D172C3F14D80005584B /* MeetingInfoViewModel.swift in Sources */,
78AED1372C3D98D1000AD80A /* NicknameView.swift in Sources */,
A3FB185B2C3BF7DF001483E5 /* MeetingMembersResponseModel.swift in Sources */,
A3DD9C252C4133CD00E58A13 /* MeetingTableViewCell.swift in Sources */,
DD3072222C3C0DA300416D9F /* PromiseParticipantListResponseModel.swift in Sources */,
789873322C3D1A7B00435E96 /* LoginViewController.swift in Sources */,
782B40722C3DBFA3008B0CA7 /* ProfileViewModel.swift in Sources */,
Expand Down
2 changes: 1 addition & 1 deletion KkuMulKum/Application/SceneDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
) {
guard let windowScene = (scene as? UIWindowScene) else { return }
self.window = UIWindow(windowScene: windowScene)
self.window?.rootViewController = NicknameViewController()
self.window?.rootViewController = MeetingListViewController()
self.window?.makeKeyAndVisible()
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_grpplus.svg",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

This file was deleted.

This file was deleted.

2 changes: 1 addition & 1 deletion KkuMulKum/Source/Core/MainTabBarController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ final class MainTabBarController: UITabBarController {
$0.tabBarItem.image = .iconHome
}

let groupListViewController: GroupListViewController = GroupListViewController().then {
let groupListViewController: MeetingListViewController = MeetingListViewController().then {
$0.tabBarItem.title = "내 모임"
$0.tabBarItem.image = .iconGroup
}
Expand Down
35 changes: 0 additions & 35 deletions KkuMulKum/Source/GroupList/GroupListViewController.swift

This file was deleted.

29 changes: 29 additions & 0 deletions KkuMulKum/Source/MeetingList/MeetingDummyModel.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//
// MeetingListModel.swift
// KkuMulKum
//
// Created by 예삐 on 7/12/24.
//

import UIKit

struct MeetingDummyModel {
let name: String
let count: Int
}

extension MeetingDummyModel {
static func dummy() -> [MeetingDummyModel] {
return [
MeetingDummyModel(name: "꾸물이들", count: 14),
MeetingDummyModel(name: "꾸물이들", count: 14),
MeetingDummyModel(name: "꾸물이들", count: 14),
MeetingDummyModel(name: "꾸물이들", count: 14),
MeetingDummyModel(name: "꾸물이들", count: 14),
MeetingDummyModel(name: "꾸물이들", count: 14),
MeetingDummyModel(name: "꾸물이들", count: 14),
MeetingDummyModel(name: "꾸물이들", count: 14),
MeetingDummyModel(name: "꾸물이들", count: 14)
]
}
}
12 changes: 12 additions & 0 deletions KkuMulKum/Source/MeetingList/MeetingListHeader.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
//
// MeetingListHeader.swift
// KkuMulKum
//
// Created by 예삐 on 7/12/24.
//

import UIKit

final class MeetingListHeader: BaseView {

}
84 changes: 84 additions & 0 deletions KkuMulKum/Source/MeetingList/MeetingListView.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
//
// GroupListView.swift
// KkuMulKum
//
// Created by 예삐 on 7/12/24.
//

import UIKit

import SnapKit
import Then

final class MeetingListView: BaseView {


// MARK: - Property

private let header = UIView()

private let infoLabel = UILabel().then {
$0.setText("꾸물리안이 가입한 모임은\n총 3개예요!", style: .head01, color: .gray8)
}

private let addButton = UIButton().then {
$0.backgroundColor = .green2
$0.layer.cornerRadius = 8
}

private let addInfoView = UIStackView().then {
$0.axis = .horizontal
$0.spacing = 8
$0.alignment = .fill
$0.distribution = .fill
}

private let addInfoLabel = UILabel().then {
$0.setText("모임 추가하기", style: .body05, color: .green3)
}

private let addIcon = UIImageView().then {
$0.image = .icGroupPlus
}

lazy var tableView = UITableView(frame: .zero, style: .plain).then {
$0.backgroundColor = .clear
$0.showsVerticalScrollIndicator = false
$0.separatorStyle = .none
header.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 170)
$0.tableHeaderView = header
}


// MARK: - UI Setting

override func setupView() {
self.backgroundColor = .gray0
addSubview(tableView)
header.addSubviews(infoLabel, addButton, addInfoView)
addInfoView.addArrangedSubviews(addIcon, addInfoLabel)
}

override func setupAutoLayout() {
infoLabel.snp.makeConstraints {
$0.top.equalToSuperview().offset(24)
$0.leading.equalToSuperview()
}

addButton.snp.makeConstraints {
$0.top.equalTo(infoLabel.snp.bottom).offset(16)
$0.leading.trailing.equalToSuperview()
$0.height.equalTo(48)
}

addInfoView.snp.makeConstraints {
$0.centerY.equalTo(addButton.snp.centerY)
$0.centerX.equalTo(addButton.snp.centerX)
}

tableView.snp.makeConstraints {
$0.leading.trailing.equalToSuperview().inset(20)
$0.top.bottom.equalToSuperview()
}
}
}
Loading

0 comments on commit e32ca9a

Please sign in to comment.