뷰의 레이아웃이 일치하는 데 여러페이지에서 쓰는 경우
즉 단일뷰 , 다수의 vc
UIView
의 서브클래스를 만들고 이 서브클래스를 여러 ViewController
에서 재사용하는 방법.
가장 일반적이고 UIView
를 독립된 컴포넌트로 만들어 필요한 곳에 쉽게 재사용할 수 잇드
class CustomView: UIView {
// Custom view setup
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
setupView()
}
private func setupView() {
// View setup code
self.backgroundColor = .blue
}
}
ViewController
에서의 사용
class FirstViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let customView = CustomView()
view.addSubview(customView)
customView.frame = view.bounds // 기타 레이아웃 설정
}
}
class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let customView = CustomView()
view.addSubview(customView)
customView.frame = view.bounds // 기타 레이아웃 설정
}
}
UIView
생성 로직을 팩토리 메서드로 캡슐화하여, 필요한 ViewController
에 주입하기.
뷰생성하는 로직을 중앙 집중화하고 주입하는 방식으로 유연하게 할수있다
class ViewFactory {
static func createCustomView() -> CustomView {
let view = CustomView()
// Additional setup if necessary
return view
}
}
ViewController
에서 팩토리 메서드를 통해 뷰를 생성하고 주입받는다
class FirstViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let customView = ViewFactory.createCustomView()
view.addSubview(customView)
customView.frame = view.bounds
}
}
class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let customView = ViewFactory.createCustomView()
view.addSubview(customView)
customView.frame = view.bounds
}
}
UIViewController
의 Container View
활용만약 UIView
뿐만 아니라 해당 뷰의 컨트롤러와 관련된 로직까지 재사용해야 하는 경우
Container View
또는 Child View Controller
패턴을 활용. 이 방법은 복잡한 뷰와 로직을 모듈화해서 재사용
class ReusableViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .red
// Setup your reusable view and logic here
}
}
// Parent ViewController
class FirstViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let reusableVC = ReusableViewController()
addChild(reusableVC)
view.addSubview(reusableVC.view)
reusableVC.view.frame = view.bounds
reusableVC.didMove(toParent: self)
}
}
UIView
서브클래스를 직접 만들어 사용하는 것이 가장 간단하고 명확하고.UIViewController
의 Container View
나 Child View Controller
를 사용하여 재사용