From 2fc910ed266dabba3dc325bd9e690f4ee0b48805 Mon Sep 17 00:00:00 2001 From: hhyukjin Date: Thu, 1 Feb 2024 03:08:29 +0900 Subject: [PATCH 1/3] =?UTF-8?q?Design:=20=EA=B0=81=20VC=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #11 --- iOS/Ringo/Ringo.xcodeproj/project.pbxproj | 16 ++++++++++ .../UserInterfaceState.xcuserstate | Bin 22623 -> 39938 bytes iOS/Ringo/Ringo/AccountViewController.swift | 29 ++++++++++++++++++ iOS/Ringo/Ringo/ContactsViewController.swift | 29 ++++++++++++++++++ iOS/Ringo/Ringo/RecentsViewController.swift | 29 ++++++++++++++++++ iOS/Ringo/Ringo/TabBarViewController.swift | 21 +++++++++++++ 6 files changed, 124 insertions(+) create mode 100644 iOS/Ringo/Ringo/AccountViewController.swift create mode 100644 iOS/Ringo/Ringo/ContactsViewController.swift create mode 100644 iOS/Ringo/Ringo/RecentsViewController.swift create mode 100644 iOS/Ringo/Ringo/TabBarViewController.swift diff --git a/iOS/Ringo/Ringo.xcodeproj/project.pbxproj b/iOS/Ringo/Ringo.xcodeproj/project.pbxproj index a3cc88d..3ff4811 100644 --- a/iOS/Ringo/Ringo.xcodeproj/project.pbxproj +++ b/iOS/Ringo/Ringo.xcodeproj/project.pbxproj @@ -7,6 +7,10 @@ objects = { /* Begin PBXBuildFile section */ + 945603132B6AC07D002F4B33 /* TabBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945603122B6AC07D002F4B33 /* TabBarViewController.swift */; }; + 945603152B6AC22A002F4B33 /* ContactsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945603142B6AC22A002F4B33 /* ContactsViewController.swift */; }; + 945603172B6AC2D3002F4B33 /* RecentsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945603162B6AC2D3002F4B33 /* RecentsViewController.swift */; }; + 945603192B6AC365002F4B33 /* AccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945603182B6AC365002F4B33 /* AccountViewController.swift */; }; 945CF97B2B67E1CD00396E4E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945CF97A2B67E1CD00396E4E /* AppDelegate.swift */; }; 945CF97D2B67E1CD00396E4E /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945CF97C2B67E1CD00396E4E /* SceneDelegate.swift */; }; 945CF97F2B67E1CD00396E4E /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945CF97E2B67E1CD00396E4E /* ViewController.swift */; }; @@ -17,6 +21,10 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 945603122B6AC07D002F4B33 /* TabBarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarViewController.swift; sourceTree = ""; }; + 945603142B6AC22A002F4B33 /* ContactsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactsViewController.swift; sourceTree = ""; }; + 945603162B6AC2D3002F4B33 /* RecentsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecentsViewController.swift; sourceTree = ""; }; + 945603182B6AC365002F4B33 /* AccountViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountViewController.swift; sourceTree = ""; }; 945CF9772B67E1CD00396E4E /* Ringo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Ringo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 945CF97A2B67E1CD00396E4E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 945CF97C2B67E1CD00396E4E /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -61,6 +69,10 @@ 945CF97A2B67E1CD00396E4E /* AppDelegate.swift */, 945CF97C2B67E1CD00396E4E /* SceneDelegate.swift */, 945CF97E2B67E1CD00396E4E /* ViewController.swift */, + 945603122B6AC07D002F4B33 /* TabBarViewController.swift */, + 945603142B6AC22A002F4B33 /* ContactsViewController.swift */, + 945603162B6AC2D3002F4B33 /* RecentsViewController.swift */, + 945603182B6AC365002F4B33 /* AccountViewController.swift */, 945CF9832B67E1CE00396E4E /* Assets.xcassets */, 945CF9852B67E1CE00396E4E /* LaunchScreen.storyboard */, 945CF9882B67E1CE00396E4E /* Info.plist */, @@ -145,9 +157,13 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 945603132B6AC07D002F4B33 /* TabBarViewController.swift in Sources */, 945CF97F2B67E1CD00396E4E /* ViewController.swift in Sources */, + 945603192B6AC365002F4B33 /* AccountViewController.swift in Sources */, 945CF97B2B67E1CD00396E4E /* AppDelegate.swift in Sources */, + 945603172B6AC2D3002F4B33 /* RecentsViewController.swift in Sources */, 945CF97D2B67E1CD00396E4E /* SceneDelegate.swift in Sources */, + 945603152B6AC22A002F4B33 /* ContactsViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/iOS/Ringo/Ringo.xcodeproj/project.xcworkspace/xcuserdata/jinhyuk.xcuserdatad/UserInterfaceState.xcuserstate b/iOS/Ringo/Ringo.xcodeproj/project.xcworkspace/xcuserdata/jinhyuk.xcuserdatad/UserInterfaceState.xcuserstate index 03a5288cc63717e419443be02a113afc4624a24a..6a6d0e1f59dbf376bada07ab5ec2b6b4fa75a649 100644 GIT binary patch literal 39938 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%0A-+&V%#hytyDw%q4PKPRAv2dd|QZITM%6nYk1$ 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 diff --git a/iOS/Ringo/Ringo/AccountViewController.swift b/iOS/Ringo/Ringo/AccountViewController.swift new file mode 100644 index 0000000..4b1d19c --- /dev/null +++ b/iOS/Ringo/Ringo/AccountViewController.swift @@ -0,0 +1,29 @@ +// +// AccountViewController.swift +// Ringo +// +// Created by 강진혁 on 2/1/24. +// + +import UIKit + +class AccountViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/iOS/Ringo/Ringo/ContactsViewController.swift b/iOS/Ringo/Ringo/ContactsViewController.swift new file mode 100644 index 0000000..3d00ed6 --- /dev/null +++ b/iOS/Ringo/Ringo/ContactsViewController.swift @@ -0,0 +1,29 @@ +// +// ContactsViewController.swift +// Ringo +// +// Created by 강진혁 on 2/1/24. +// + +import UIKit + +class ContactsViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/iOS/Ringo/Ringo/RecentsViewController.swift b/iOS/Ringo/Ringo/RecentsViewController.swift new file mode 100644 index 0000000..6577f03 --- /dev/null +++ b/iOS/Ringo/Ringo/RecentsViewController.swift @@ -0,0 +1,29 @@ +// +// RecentsViewController.swift +// Ringo +// +// Created by 강진혁 on 2/1/24. +// + +import UIKit + +class RecentsViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/iOS/Ringo/Ringo/TabBarViewController.swift b/iOS/Ringo/Ringo/TabBarViewController.swift new file mode 100644 index 0000000..d7c1c2d --- /dev/null +++ b/iOS/Ringo/Ringo/TabBarViewController.swift @@ -0,0 +1,21 @@ +// +// TabBarViewController.swift +// Ringo +// +// Created by 강진혁 on 2/1/24. +// + +import UIKit + +class TabBarViewController: UITabBarController{ + + override func viewDidLoad() { + super.viewDidLoad() + + let contactsVC = ContactsViewController() + let recentsVC = RecentsViewController() + let AccountVC = AccountViewController() + + } + +} From ff31539460f91d2d8a279fcb75904a782d982eb2 Mon Sep 17 00:00:00 2001 From: hhyukjin Date: Thu, 1 Feb 2024 03:53:53 +0900 Subject: [PATCH 2/3] =?UTF-8?q?Design:=20VC=20title=20=EB=B0=8F=20image=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tab bar에 VC title 및 image 추가 tab bar에 VC 연결 #11 --- .../UserInterfaceState.xcuserstate | Bin 39938 -> 41588 bytes iOS/Ringo/Ringo/AccountViewController.swift | 1 + iOS/Ringo/Ringo/ContactsViewController.swift | 1 + iOS/Ringo/Ringo/RecentsViewController.swift | 1 + iOS/Ringo/Ringo/SceneDelegate.swift | 2 +- iOS/Ringo/Ringo/TabBarViewController.swift | 14 ++++++++++++-- iOS/Ringo/Ringo/ViewController.swift | 2 +- 7 files changed, 17 insertions(+), 4 deletions(-) diff --git a/iOS/Ringo/Ringo.xcodeproj/project.xcworkspace/xcuserdata/jinhyuk.xcuserdatad/UserInterfaceState.xcuserstate b/iOS/Ringo/Ringo.xcodeproj/project.xcworkspace/xcuserdata/jinhyuk.xcuserdatad/UserInterfaceState.xcuserstate index 6a6d0e1f59dbf376bada07ab5ec2b6b4fa75a649..63a10e8dbc9846789bf30256c224c7267695b439 100644 GIT binary patch delta 17923 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 Q)VnRhFaO+pnYi`;0dx@DTmS$7 delta 16552 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 Date: Fri, 2 Feb 2024 01:42:25 +0900 Subject: [PATCH 3/3] =?UTF-8?q?Design:=20=EC=B9=9C=EA=B5=AC=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20ui=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #11 --- iOS/Ringo/Ringo.xcodeproj/project.pbxproj | 8 +++ .../UserInterfaceState.xcuserstate | Bin 41588 -> 56888 bytes .../Ringo/ContactsNavigationController.swift | 48 +++++++++++++ iOS/Ringo/Ringo/ContactsViewController.swift | 65 +++++++++++++++++- .../Ringo/FriendRequestViewController.swift | 33 +++++++++ iOS/Ringo/Ringo/TabBarViewController.swift | 37 +++++++--- 6 files changed, 179 insertions(+), 12 deletions(-) create mode 100644 iOS/Ringo/Ringo/ContactsNavigationController.swift create mode 100644 iOS/Ringo/Ringo/FriendRequestViewController.swift diff --git a/iOS/Ringo/Ringo.xcodeproj/project.pbxproj b/iOS/Ringo/Ringo.xcodeproj/project.pbxproj index 3ff4811..3825fa0 100644 --- a/iOS/Ringo/Ringo.xcodeproj/project.pbxproj +++ b/iOS/Ringo/Ringo.xcodeproj/project.pbxproj @@ -11,6 +11,8 @@ 945603152B6AC22A002F4B33 /* ContactsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945603142B6AC22A002F4B33 /* ContactsViewController.swift */; }; 945603172B6AC2D3002F4B33 /* RecentsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945603162B6AC2D3002F4B33 /* RecentsViewController.swift */; }; 945603192B6AC365002F4B33 /* AccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945603182B6AC365002F4B33 /* AccountViewController.swift */; }; + 9456031B2B6BD40B002F4B33 /* ContactsNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9456031A2B6BD40B002F4B33 /* ContactsNavigationController.swift */; }; + 9456031D2B6BF44A002F4B33 /* FriendRequestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9456031C2B6BF44A002F4B33 /* FriendRequestViewController.swift */; }; 945CF97B2B67E1CD00396E4E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945CF97A2B67E1CD00396E4E /* AppDelegate.swift */; }; 945CF97D2B67E1CD00396E4E /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945CF97C2B67E1CD00396E4E /* SceneDelegate.swift */; }; 945CF97F2B67E1CD00396E4E /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 945CF97E2B67E1CD00396E4E /* ViewController.swift */; }; @@ -25,6 +27,8 @@ 945603142B6AC22A002F4B33 /* ContactsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactsViewController.swift; sourceTree = ""; }; 945603162B6AC2D3002F4B33 /* RecentsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecentsViewController.swift; sourceTree = ""; }; 945603182B6AC365002F4B33 /* AccountViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountViewController.swift; sourceTree = ""; }; + 9456031A2B6BD40B002F4B33 /* ContactsNavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactsNavigationController.swift; sourceTree = ""; }; + 9456031C2B6BF44A002F4B33 /* FriendRequestViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendRequestViewController.swift; sourceTree = ""; }; 945CF9772B67E1CD00396E4E /* Ringo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Ringo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 945CF97A2B67E1CD00396E4E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 945CF97C2B67E1CD00396E4E /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -70,7 +74,9 @@ 945CF97C2B67E1CD00396E4E /* SceneDelegate.swift */, 945CF97E2B67E1CD00396E4E /* ViewController.swift */, 945603122B6AC07D002F4B33 /* TabBarViewController.swift */, + 9456031A2B6BD40B002F4B33 /* ContactsNavigationController.swift */, 945603142B6AC22A002F4B33 /* ContactsViewController.swift */, + 9456031C2B6BF44A002F4B33 /* FriendRequestViewController.swift */, 945603162B6AC2D3002F4B33 /* RecentsViewController.swift */, 945603182B6AC365002F4B33 /* AccountViewController.swift */, 945CF9832B67E1CE00396E4E /* Assets.xcassets */, @@ -157,6 +163,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 9456031B2B6BD40B002F4B33 /* ContactsNavigationController.swift in Sources */, 945603132B6AC07D002F4B33 /* TabBarViewController.swift in Sources */, 945CF97F2B67E1CD00396E4E /* ViewController.swift in Sources */, 945603192B6AC365002F4B33 /* AccountViewController.swift in Sources */, @@ -164,6 +171,7 @@ 945603172B6AC2D3002F4B33 /* RecentsViewController.swift in Sources */, 945CF97D2B67E1CD00396E4E /* SceneDelegate.swift in Sources */, 945603152B6AC22A002F4B33 /* ContactsViewController.swift in Sources */, + 9456031D2B6BF44A002F4B33 /* FriendRequestViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/iOS/Ringo/Ringo.xcodeproj/project.xcworkspace/xcuserdata/jinhyuk.xcuserdatad/UserInterfaceState.xcuserstate b/iOS/Ringo/Ringo.xcodeproj/project.xcworkspace/xcuserdata/jinhyuk.xcuserdatad/UserInterfaceState.xcuserstate index 63a10e8dbc9846789bf30256c224c7267695b439..8582104f7fd1c70eb0519b261523a82acf721f65 100644 GIT binary patch literal 56888 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 delta 19305 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 ContactsNavigationController { + return ContactsNavigationController() + } + + func updateUIViewController(_ uiViewController: ContactsNavigationController, context: Context) { + } + + typealias UIViewControllerType = ContactsNavigationController + +} +@available(iOS 13.0.0, *) +struct ContactsNavigationViewPreview: PreviewProvider { + static var previews: some View { + ContactsNavigationControllerRepresentable().edgesIgnoringSafeArea(.all) + } +} diff --git a/iOS/Ringo/Ringo/ContactsViewController.swift b/iOS/Ringo/Ringo/ContactsViewController.swift index f58c4fc..502c27f 100644 --- a/iOS/Ringo/Ringo/ContactsViewController.swift +++ b/iOS/Ringo/Ringo/ContactsViewController.swift @@ -6,14 +6,53 @@ // import UIKit +import SnapKit -class ContactsViewController: UIViewController { +class ContactsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { + + let randomNames = ["민준", "서준", "예준", "도윤", "시우", "주원", "하준", "지호", "지후", "준서", "준우", "현우", "도현", "지훈", "건우", "우진", "선우", "서진", "민재", "현준", "연우", "유준", "정우", "승우", "승현", "시윤", "준혁", "은우", "지환", "승민", "지우", "유찬", "윤우", "민성", "준영", "시후", "진우", "지수", "서연", "서윤", "지우", "서현", "민서", "하은", "하윤", "윤서", "지유", "지민", "채원", "지윤", "은서", "수아", "다은", "예은", "지아", "수빈", "소율", "예린", "예원", "지원", "소윤", "지안", "하린", "시은", "유진", "채은"] + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return randomNames.count + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) + cell.textLabel?.text = randomNames[indexPath.row] + + return cell + } + + let searchController = UISearchController() + var tableView: UITableView! + override func viewDidLoad() { super.viewDidLoad() - view.backgroundColor = .red - // Do any additional setup after loading the view. + view.backgroundColor = .white + +// navigationItem.largeTitleDisplayMode = .inline + + //navigation + self.navigationItem.title = "Contacts" + self.navigationController?.navigationBar.prefersLargeTitles = true + self.navigationItem.searchController = searchController + self.navigationItem.hidesSearchBarWhenScrolling = false + self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(systemName: "person.badge.plus"), style: .plain, target: self, action: #selector(requestFriend)) + + //table + tableView = UITableView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height)) + tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell") + tableView.delegate = self + tableView.dataSource = self + self.view.addSubview(tableView) + + } + + //navigaion rightBtn action + @objc private func requestFriend(_ sender: UIBarButtonItem) { + self.navigationController?.pushViewController(FriendRequestViewController(), animated: true) } @@ -28,3 +67,23 @@ class ContactsViewController: UIViewController { */ } +// canvas 이용하기 +import SwiftUI + +struct ContactsViewControllerRepresentable: UIViewControllerRepresentable { + func makeUIViewController(context: Context) -> ContactsViewController { + return ContactsViewController() + } + + func updateUIViewController(_ uiViewController: ContactsViewController, context: Context) { + } + + typealias UIViewControllerType = ContactsViewController + +} +@available(iOS 13.0.0, *) +struct ContactsViewPreview: PreviewProvider { + static var previews: some View { + ContactsViewControllerRepresentable().edgesIgnoringSafeArea(.all) + } +} diff --git a/iOS/Ringo/Ringo/FriendRequestViewController.swift b/iOS/Ringo/Ringo/FriendRequestViewController.swift new file mode 100644 index 0000000..7e38787 --- /dev/null +++ b/iOS/Ringo/Ringo/FriendRequestViewController.swift @@ -0,0 +1,33 @@ +// +// FriendRequestViewController.swift +// Ringo +// +// Created by 강진혁 on 2/2/24. +// + +import UIKit + +class FriendRequestViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + view.backgroundColor = .brown + + self.navigationItem.title = "Request Friend" + self.navigationItem.largeTitleDisplayMode = .never + // Do any additional setup after loading the view. + } + + + /* + // MARK: - Navigation + + // In a storyboard-based application, you will often want to do a little preparation before navigation + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + // Get the new view controller using segue.destination. + // Pass the selected object to the new view controller. + } + */ + +} diff --git a/iOS/Ringo/Ringo/TabBarViewController.swift b/iOS/Ringo/Ringo/TabBarViewController.swift index c733048..249d3ea 100644 --- a/iOS/Ringo/Ringo/TabBarViewController.swift +++ b/iOS/Ringo/Ringo/TabBarViewController.swift @@ -13,19 +13,38 @@ class TabBarViewController: UITabBarController{ override func viewDidLoad() { super.viewDidLoad() - let contactsVC = UINavigationController(rootViewController: ContactsViewController()) + tabBar.backgroundColor = .init(white: 1, alpha: 0.8) + +// let contactsVC = UINavigationController(rootViewController: ContactsViewController()) + let contactsVC = ContactsNavigationController() let recentsVC = RecentsViewController() let accountVC = AccountViewController() - contactsVC.title = "Contacts" - recentsVC.title = "Recents" - accountVC.title = "Account" - - contactsVC.tabBarItem.image = UIImage(systemName: "person.3") - recentsVC.tabBarItem.image = UIImage(systemName: "clock") - accountVC.tabBarItem.image = UIImage(systemName: "person.text.rectangle") + contactsVC.tabBarItem = UITabBarItem(title: "Contacts", image: UIImage(systemName: "person.3"), tag: 1) + recentsVC.tabBarItem = UITabBarItem(title: "Recents", image: UIImage(systemName: "clock"), tag: 2) + accountVC.tabBarItem = UITabBarItem(title: "Account", image: UIImage(systemName: "person.text.rectangle"), tag: 3) - setViewControllers([contactsVC,recentsVC,accountVC], animated: true) + setViewControllers([contactsVC,recentsVC,accountVC], animated: false) + } +} + +// canvas 이용하기 +import SwiftUI + +struct TabBarViewControllerRepresentable: UIViewControllerRepresentable { + func makeUIViewController(context: Context) -> TabBarViewController { + return TabBarViewController() } + func updateUIViewController(_ uiViewController: TabBarViewController, context: Context) { + } + + typealias UIViewControllerType = TabBarViewController + +} +@available(iOS 13.0.0, *) +struct TabBarViewPreview: PreviewProvider { + static var previews: some View { + TabBarViewControllerRepresentable().edgesIgnoringSafeArea(.all) + } }