Swift 프로젝트에서 xib의 구성 요소를 재사용하려고하지만 Objective C 논리를 사용하고 있습니다. 따라서 뷰를 서브 클래스 화하고 xib를로드 한 다음 사용자 정의 뷰을 보기 컨트롤러에 인스턴스화합니다.Swift에서 뷰 하위 클래스의 xib로드
코드를 Swift로 변환하면 예상 결과가 생성되지 않습니다.
CustomView.swift :
override init(frame: CGRect) {
super.init(frame: frame)
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
fatalError("Error detected")
self.commonInit()
}
private func commonInit() {
NSBundle.mainBundle().loadNibNamed("mainBar", owner: self, options: nil)
self.addSubview(self)
}
viewController.swift :
var bottomBar : customView = customView(frame: CGRect(x: 0, y: 250, width: 250, height: 70))
//bottomBar.backgroundColor = UIColor.redColor()
self.view.addSubview(bottomBar)
Objectiv I가 기준이되는 E-C : 우측 방향으로 임의의 주석이 이해된다
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self baseInit];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
[[NSBundle mainBundle] loadNibNamed:@"yourXib" owner:self options:nil];
[self addSubview:self.view];
}
return self;
}
CustomView * myView = [CustomView alloc]init];
[self.view addSubView:myView];
.
실행에 신속한 코드로 문제가 무엇을 시도 할 수 있습니다? – Woodstock
xib가 뷰 컨트롤러에로드되지 않았습니다. – carlodurso
사용 방법 - 답변 : https://stackoverflow.com/questions/9282365/load-view-from-an-external-xib-file-in-storyboard# – Shaky99