2014-09-05 2 views
5

SKScene 뷰에 UIView를 추가하고 있습니다. 나중에 UIView 폼을 슈퍼 뷰에서 삭제하려고 할 때 uiview.removeFromSuperview의 표준 메서드를 사용하면 작동하지 않는 것 같습니다. 대신 어떻게해야합니까?removeFromSuperview가 작동하지 않습니다. UIView가 SKScene에 추가되었습니다.

다음
func addContainerView() { 

    let containerRect = CGRectMake(400, 24, 600, 720) 
    smallerView = UIView(frame: containerRect) 
    smallerView.backgroundColor = UIColor.redColor() 
    self.view.addSubview(smallerView) 
} 

내가 그것을 제거하려고 시도하고 방법은 다음과 같습니다 : 여기 내가있는 UIView를 추가하는 방법이다, 그래서 여기에

func removeContainerView() { 

    smallerView.removeFromSuperview() 
} 

이 모든 SKScene 클래스 내에서 발생을 '자기'그 장면을 말한다 . 의견이 있으십니까?

+0

사실'SKView' 인'self.view'에 추가합니다. –

+0

감사합니다. @AndreyGordeev, 이것은 흥미로운 관찰이며, 사실입니다. 그러나 이것이 내 문제에 어떤 영향을 미치는지 확실하지 않습니다. SKView는 UIView에서 상속되므로 하위 뷰를 제거하는 것과 같은 방식으로 작동해야합니다. 맞습니까? – zeeple

+0

잘 작동합니다. 화면에 머무르게하는 다른 것이 있어야합니다. SceneKit 템플릿에서 viewDidLoad 중에 뷰를 추가하고 handleTap 메서드에서 뷰를 제거하면 모든 것이 예상대로 작동합니다. – bjtitus

답변

1

우선 내가 사용하는 신속한 버전이 궁금합니다.

self.view 그러므로 당신이 입력해야 옵션 1.2입니다 : self.view?.addSubview()을 타겟팅하는 경우 신속한 나는 간단한 응용 프로그램을

class GameScene: SKScene { 

    let subview = UIView() 

    override func didMoveToView(view: SKView) { 

    subview.frame = CGRectMake(0, 0, 100, 100) 
    subview.backgroundColor = SKColor.orangeColor() 
    self.view?.addSubview(subview) 
    } 

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
    removeContainerView() 
    } 

    func removeContainerView() { 
    subview.removeFromSuperview() 
    } 
} 

위의 코드 작품을 만들기 위해 신속 1.2 시도 1.2

아주 잘. 내가보기 당신이 removeContainerView 실제로이라고 확신합니다

  1. 제거되지 않는 몇 가지 이유 생각할 수 있습니다. 전화가 왔는지 확인하기 위해 중단 점을 만들어보십시오
  2. 코드에서 SKView를 설정 한 경우 설정이 잘못되었을 수 있습니다.
  3. 귀하의 서브 뷰는 할당 해제 또는되고 뭔가

완전히 우리가 좀 더 많은 코드를 볼 필요가 문제를 디버그합니다.

은 우리에게 필요한 것은 : 당신의 서브 뷰 removeContainerView 전화

  • 모든 기능()
  • 더 나은의

    1. 선언 pastebin 당신의 SKScene 클래스에있을 것이다.

    관련 문제