탭바의 탭바뷰컨트롤러를 누르면 탭바를 잠까 멈췄다가 액션시트로 처리하는 방법
import UIKit
class MainTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
let homeVC = HomeViewController()
let newFeedVC = FeedViewController()
let calendarVC = CalendarViewController()
homeVC.tabBarItem.image = UIImage(systemName: "square.stack.3d.up")
homeVC.tabBarItem.selectedImage = UIImage(systemName: "square.stack.3d.up.fill")
newFeedVC.tabBarItem.image = UIImage(systemName: "checklist.unchecked")
newFeedVC.tabBarItem.selectedImage = UIImage(systemName: "checklist")
calendarVC.tabBarItem.image = UIImage(systemName: "calendar")
homeVC.tabBarItem.title = "Home"
newFeedVC.tabBarItem.title = "Feed"
calendarVC.tabBarItem.title = "Calendar"
setViewControllers([homeVC, newFeedVC, calendarVC], animated: true)
// TabBarController의 Delegate 설정
self.delegate = self
}
}
extension MainTabBarController: UITabBarControllerDelegate {
// shouldSelect -> 탭이 선택되기 직전에 호출
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
// newFeedVC를 선택한 경우 ActionSheet 표시
if let index = tabBarController.viewControllers?.firstIndex(of: viewController), index == 1 {
presentActionSheet()
return false // 탭 선택 방지
}
return true // 다른 탭은 정상 동작
}
// MARKL: - ActionSheet
private func presentActionSheet() {
let actionSheet = UIAlertController(
title: "무슨 내용을 적을래요?",
message: "어떤 내용이든 상관없어요 ^___^",
preferredStyle: .actionSheet
)
actionSheet.addAction(UIAlertAction(
title: "피드 작성하기",
style: .default,
handler: { action in
let feedVC = FeedViewController()
let navFeedVC = UINavigationController(rootViewController: feedVC)
navFeedVC.modalPresentationStyle = .fullScreen
self.present(navFeedVC, animated: true)
}
))
actionSheet.addAction(UIAlertAction(
title: "취소",
style: .cancel,
handler: nil))
self.present(actionSheet, animated: true)
}
}
'UIKIT' 카테고리의 다른 글
키보드 내리기 (0) | 2024.12.27 |
---|---|
UICollectionView의 셀 크기를 동적으로 정사각형으로 조정하려면? (0) | 2024.12.22 |
델리게이트 패턴으로 사진 선택하기 (0) | 2024.12.20 |
UIScreen과 UIScene (0) | 2024.12.19 |
setContentHuggingPriority, setContentCompressionResistancePriority (0) | 2024.12.17 |