요 며칠 뜸하다가 갖고 돌아온 주제는... GPT-4o가 알려주는 UIKit으로 탭 뷰 만들기.
업데이트 이후로 내가 쓰던 게 사실 4o였다는 걸 어제 처음 알았다... 하루에 20개 제한이었던가? 찾아보니 16개라네. 의외로 하루에 많이 질문하지 않았구나 했다.
아무튼 혼자서 UIKit 만져보는 김에 지피티 4o한테~~~ 스토리보드 안 쓰고 탭뷰 어떻게 만드냐고 물어봤고, 정리하며 진행하려 한다.
++) 이 절차는 모두 지피티가 알려준 대로 했으며 알려준 내용을 고의로 누락하거나 내가 빼먹진 않았음을 미리 알린다. 안 한 건 이 자식이 안 알려줘서 안 한 거임
오랜만에 일기 형식 외의 글이라 두근두근 하다...
사실 그냥 글도 쓸 수 있긴 하다. 근데 사진 없으면 정보 전달의 기능은 떨어지고 사진 넣기에는 일일이 찍고 넣고 너무 귀찮다.
뭐... 일단 가보자.
- 프로젝트 생성
- 목적에 맞는 프로젝트 생성(Swift, App, UIKit 등등)
- 스토리보드를 사용하지 않도록 설정하기 위해 'Main.storyboard' 삭제
- 'Info.plist' 파일에서 'Main storyboard file base name' 키 삭제
- AppDelegate와 SceneDelegate 설정
- 'AppDelegate.swift'와 'SceneDelegate.swift' 파일 다음과 같이 수정
- 예제코드
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
window?.rootViewController = createTabBarController()
window?.makeKeyAndVisible()
}
func createTabBarController() -> UITabBarController {
let tabBarController = UITabBarController()
// 첫 번째 탭
let firstViewController = UIViewController()
firstViewController.view.backgroundColor = .red
firstViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .favorites, tag: 0)
// 또 생략!!
// 다섯 번째 탭
let fifthViewController = UIViewController()
fifthViewController.view.backgroundColor = .purple
fifthViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .downloads, tag: 4)
tabBarController.viewControllers = [
firstViewController,
secondViewController,
thirdViewController,
fourthViewController,
fifthViewController
]
return tabBarController
}
}
자 위 순서대로 설정 후 SceneDelegate에 코드를 입력하여 실행하면!!!!!
오류가 난다.
그렇다. 놀랍게도 오류가 난다. 그 원인은 저 위에서 Info 파일에 Storyboard Name을 삭제하란 말은 안 했기 때문이다. 장난하냐 GPT!!!!!
저놈 지우면 실행됨
Thread 1: "Could not find a storyboard named 'Main' in bundle NSBundle << 이걸 삭제하기 전까지 요런 에러가 났었다.
이 또한 지피티한테 물어봤는데.... 저런 설정이 있다는 말도 아니고 Info 파일 확인해서 모든 스토리보드 설정 삭제하라고 뭉뚱그려서 알려줬다. 친절함은 저세상으로 가버렸나.
반말로 물어봤더니 반말로 대답해서 더욱 빡치게 한다.
후... 암튼 저거 삭제하고 실행하면 잘 실행된다. 근데 첫 화면이 빨간색이라 눈 아프다... 그래서 눈 덜 아픈 파란 화면만 캡처해 옴
아 이것도 눈 아프네 대환장
암튼 하단 보면 잘 안보이긴 하지만 선택된 두 번째 뷰 아이템이 보인다.
여기까진 시키는 대로 했고... 이제 내맘대로 편하게 수정해 왔다.
import UIKit
class ThirdViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel()
label.text = "Third Page"
label.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(label)
NSLayoutConstraint.activate([
label.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor),
label.centerYAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerYAnchor)
])
}
대충 위와 같은 뷰 파일 5개를 만들어서 각 탭과 연결해줬다. 아까 지피티 코드의 탭 바 컨트롤러 생성 부분을 뷰 컨트롤러로 바꿔주면 된다.
사실 지금 피곤해서 내가 제대로 말하고 있는지 모르겠다. 다른 탭 누르면 해당 페이지에 맞게 바뀐다.
아 tabBarSystemItem도 바꿔줘야되는데... 내일 할까... 커피 안 먹었더니 진짜 피곤하다
방금 메일 봤는데 좀있음 WWDC네
아직 뭐가뭔지 제대로 모르는데 또 바뀐다니... 정말 애플 생태계는 나약한 개발자는 살아남을 수가 없군