2015-02-02 3 views
0

this one과 비슷한 팝업보기를 만들려고합니다. 지금까지 내가 한 일은 다음과 같습니다.내 팝업보기가 비어있는 이유는 무엇입니까?

  • 새로운 단일보기 프로젝트를 엽니 다.
  • 기본보기에 단추가 추가되었습니다.
  • 추가 "popup.xib"
  • 추가 내가 "PopupViewController"최초 대응 클래스를 만든 아이덴티티 탭에서 "PopupViewController.swift"
  • 라는 이름의 새 신속한 파일
  • I라는 새 XIB 파일 popup.xib에 레이블, 버튼 및 배경색이 다른보기를 넣습니다. 물론 모든 것이 나타나야하는 곳에 대한 제약이 있습니다.

내 코드 :

ViewController.swift

import UIKit 

class ViewController: UIViewController { 

    @IBAction func showPopup(sender: AnyObject) { 
     var x = PopupViewController() 
     x.show(self.view) 
     x.showAnimate() 
    } 
} 

PopupViewController

import UIKit 

class PopupViewController : UIViewController { 

    func show(tView : UIView) { 
     tView.addSubview(self.view) 
     println("here") 
     self.view.backgroundColor = UIColor.redColor() 

    } 

    func showAnimate() { 
     self.view.transform = CGAffineTransformMakeScale(1.0, 1.0) 
     self.view.alpha = 0.3 
    } 

} 

결과 : 버튼 내가 있기 때문에 (뷰에 redish입니다 오버레이를 얻을 누르면 추가 한 뷰는 빨간색이고 30 %의 불투명도가 있음). 그러나 새 뷰는 비어 있습니다. 버튼 없음, 레이블 없음, 다른 색상의 영역 없음.

popup.xib에 요소가 표시되도록하려면 어떻게해야합니까?


내가 파일의 소유자 및 Nerkyator의 대답에 추가하여 기본보기 사이의 연결을 잃어버린

업데이트. "File 's Onwer"를 마우스 오른쪽 버튼으로 클릭하고 뷰에서 두 줄 아래의 기본보기로 드래그하십시오.

답변

0

보기에 연결된 xib를 수동으로로드해야합니다. UIViewController를 지원하도록 수정 된이 확장 (found at this link)을 사용한 다음 필요할 때 호출합니다.

extension UIViewController { 
    class func loadFromNibNamed(nibNamed: String, bundle : NSBundle? = nil) -> Self? { 
     return UINib(
      nibName: nibNamed, 
      bundle: bundle 
      ).instantiateWithOwner(nil, options: nil)[0] as? UIViewController 
    } 
} 

후 답변을

@IBAction func showPopup(sender: AnyObject) { 
    var x = PopupViewController.loadFromNibNamed("popup") 
    //do what you need with x 
} 
+0

감사합니다. 어떤 이유로 'PopupViewController.Type'에 'loadControllerFromNibNamed'라는 멤버가 없습니다. 파일과 별도의 파일에 넣으려고했습니다. 아무것도 효과가 없습니다. (나는 다시 빌드를 깨끗하게 만들려고했다.) –

+0

이전 답장을 편집했는데, 거기에 오타가 있었다. 이제는 정확합니다 (loadFromNibNamed에 더 이상 Controller가 없습니다). – Nerkyator

+0

이제 컴파일되지만 어떤 이유로 x가 nil이고 액세스 할 때 오류가 발생합니다. –

관련 문제