2014-09-05 7 views
5

में जोड़े गए UIView के लिए काम नहीं करता है, मैं एक SKScene के दृश्य में UIView जोड़ रहा हूं। बाद में, जब मैं Uiview.removeFromSuperview की मानक विधि का उपयोग कर काम करता हूं, तो उस UIView को अपना पर्यवेक्षण फॉर्म निकालना चाहता हूं। इसके बजाय मुझे इसे कैसे पूरा करना चाहिए?removeFromSuperview SIVcene

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

आप वास्तव में इसे 'self.view' में जोड़ते हैं, जो' SKView' –

+0

धन्यवाद @AndreyGordeev, यह एक दिलचस्प अवलोकन है, एक सच है, लेकिन मुझे यकीन नहीं है कि यह मेरी समस्या को कैसे प्रभावित करता है। SKView UIView से विरासत में आता है, और इसलिए सबव्यूव को हटाने से वैसे ही काम करना चाहिए, है ना? – zeeple

+0

यह मेरे लिए ठीक काम करता है। ऐसा कुछ और होना चाहिए जो इसे स्क्रीन पर रहने के लिए प्रेरित कर रहा हो। मैंने सीनडिटक टेम्पलेट में viewDidLoad के दौरान एक दृश्य जोड़ा और इसे हैंडलटैप विधि में हटा दें और सब कुछ अपेक्षित काम करता है। – bjtitus

उत्तर

1

सबसे पहले मुझे आश्चर्य है कि आप किस स्विफ्ट का उपयोग कर रहे हैं।

self.viewवैकल्पिक 1.2 में है इसलिए अपने टाइप करना चाहिए: self.view?.addSubview() यदि आप लक्षित कर रहे हैं तेजी से 1.2

मैं तेजी से 1.2 में की कोशिश की है एक सरल अनुप्रयोग

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. आप यह सुनिश्चित करें कि removeContainerView वास्तव में कहा जाता है कर रहे हैं के बारे में सोच सकते हैं। यह देखने के लिए ब्रेक पॉइंट बनाने का प्रयास करें कि इसे
  2. कहा गया है यदि आपने कोड में अपना SKView सेट अप किया है तो कुछ गलत हो सकता है।
  3. आपका subview पुनः आवंटित की जाती या किया जा रहा है कुछ

पूरी तरह से आपकी समस्या को हम कुछ और कोड देखने की जरूरत डिबग करने के लिए।

हम क्या जरूरत है:

  1. अपने subview
  2. सभी कार्यों कि removeContainerView फोन()

भी अच्छी बात की घोषणा pastebin अपने SKScene वर्ग के लिए किया जाएगा।

संबंधित मुद्दे