2017-02-16 2 views
-1

xib를 사용하여 뷰를로드하고 있지만 항상 충돌합니다. 나는 그물에 유효한 다른 접근을 시도했다 그러나 아직도 그것을 부수 는다. 나는 어떤 해결책도를 다루는 찾아 내지 않는다. 참조 용 코드를 첨부했습니다. Click hereXIb에서 뷰로드가 충돌합니다.

+0

충돌 메시지가 무엇입니까? –

+0

EXE_BAD_ACCESS는 항상 – ankit

답변

1

코드를 검사했는데 파일 소유자에게보기 클래스를 제공하고 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 
    } 

처럼 카트를로드하려고

+0

이게 작동합니다. 고마워요 !! – ankit

+0

당신은 환영합니다 :) –

1

절대적으로 그와보기를로드 아무 문제가 없습니다. 문제는 뷰의 클래스 내에 뷰를로드하지 않아야한다는 것입니다.

당신은 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 
    } 
    } 
+0

Jason, 파일 소유자에게 장바구니 클래스를 추가하면 저를 위해 일했습니다. VIewController에 추가 할 필요가 없습니다. – ankit

+0

코드를 보았습니다. viewController 외부의 뷰를 하위 뷰로로드하는 좋은 방법이 아닙니다. @Krishnanunni도 똑같이 말했다. –

1

은 잘못된 것입니다. 스토리 보드에서 xib와 뷰 모두에 대해 클래스를 장바구니로 설정했습니다.

viewController에서 펜촉을로드하고 하위 뷰로 추가하십시오. 스토리 보드에서 작은보기가 컨테이너로 필요하면 콘센트를 만들고 컨테이너에 하위보기로 카드보기를 추가하면됩니다.

+0

이 방법은 xib에서 뷰를로드하는 데 더 적합한 방법이라고 생각합니다. –

+0

그렇지만 IBDesignable 클래스를 만들고 싶다면 어떻게해야할까요? 이렇게하면 스토리 보드에서 서브 클래 싱해야합니다. – ankit

+0

xib에서 IBDesignable을 설정할 수 있다고 생각하지 않습니다. 설정 한 이미지는 IB – krishnanunni

관련 문제