xib를 사용하여 뷰를로드하고 있지만 항상 충돌합니다. 나는 그물에 유효한 다른 접근을 시도했다 그러나 아직도 그것을 부수 는다. 나는 어떤 해결책도를 다루는 찾아 내지 않는다. 참조 용 코드를 첨부했습니다. Click hereXIb에서 뷰로드가 충돌합니다.
답변
코드를 검사했는데 파일 소유자에게보기 클래스를 제공하고 IBOutlets 및 IBActions를 변경하는 것이 문제입니다.
첫 번째 것은 FileOwner에 'CartView'를주고보기에서 제거하는 것입니다.
그런 다음 IBAction을 제스처에서 제거하고 IBOutlets을 lbl 및 img에서 제거한 다음 다시 filesowner를 참조 할 항목을 지정하십시오. 당신이
private func loadViewFromNib() -> UIView {
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: "CartView", bundle: bundle)
let nibView = nib.instantiate(withOwner: self, options: nil).first as! UIView
return nibView
}
처럼 카트를로드하려고
이게 작동합니다. 고마워요 !! – ankit
당신은 환영합니다 :) –
절대적으로 그와보기를로드 아무 문제가 없습니다. 문제는 뷰의 클래스 내에 뷰를로드하지 않아야한다는 것입니다.
당신은 ViewController 내에서해야합니다.
func loadCartView() -> UIView! {
if let customView = NSBundle.mainBundle().loadNibNamed("CartView", owner: self, options: nil).first as? CartView {
customView.translatesAutoresizingMaskIntoConstraints = false
return customView
} else {
return nil
}
}
SWIFT3 : 이런 식으로 뭐하는
func loadCartView() -> UIView! {
if let customView = Bundle.main.loadNibNamed("CartView", owner: self, options: nil)?.first as? CartView {
customView.translatesAutoresizingMaskIntoConstraints = false
return customView
} else {
return nil
}
}
Jason, 파일 소유자에게 장바구니 클래스를 추가하면 저를 위해 일했습니다. VIewController에 추가 할 필요가 없습니다. – ankit
코드를 보았습니다. viewController 외부의 뷰를 하위 뷰로로드하는 좋은 방법이 아닙니다. @Krishnanunni도 똑같이 말했다. –
은 잘못된 것입니다. 스토리 보드에서 xib와 뷰 모두에 대해 클래스를 장바구니로 설정했습니다.
viewController에서 펜촉을로드하고 하위 뷰로 추가하십시오. 스토리 보드에서 작은보기가 컨테이너로 필요하면 콘센트를 만들고 컨테이너에 하위보기로 카드보기를 추가하면됩니다.
이 방법은 xib에서 뷰를로드하는 데 더 적합한 방법이라고 생각합니다. –
그렇지만 IBDesignable 클래스를 만들고 싶다면 어떻게해야할까요? 이렇게하면 스토리 보드에서 서브 클래 싱해야합니다. – ankit
xib에서 IBDesignable을 설정할 수 있다고 생각하지 않습니다. 설정 한 이미지는 IB – krishnanunni
충돌 메시지가 무엇입니까? –
EXE_BAD_ACCESS는 항상 – ankit