2015-08-10 8 views
2

J'ai une vue principale et une sous-vue. Tout a fonctionné parfaitement: Je clique sur un bouton "Ouvrir" sur la vue, qui affiche le sous-vue au-dessus de tout, et je peux fermer le sous-aperçu.Subview affiche derrière tout, après avoir mis un adbannerview

J'ai décidé d'ajouter un adBannerView au bas de mon application. Lorsque je lance l'application, adbannerView fonctionne parfaitement: l'ajout est chargé dans un cadre au bas de mon application. Mais quand je clique sur le bouton "Ouvrir", la sous-vue ne s'affiche plus par-dessus tout. Il affiche SOUS tout ce qui se trouve sur la vue. Pouvez-vous m'aider à résoudre ce problème? Merci beaucoup!

Voici le code que j'ai mis en place pour le adBannerView et la sous-vue (j'ai supprimé autre code ne concerne pas mon problème):

import UIKit 
import iAd 

class ViewController: UIViewController, ADBannerViewDelegate { 

@IBOutlet weak var boutonChangerPays: UIButton! 
@IBOutlet weak var cadrePays: UIView! 
@IBOutlet weak var bannierePub: ADBannerView! 

// Chargement initial de la Vue principale 
override func viewDidLoad() { 

    super.viewDidLoad() 

    // Cadre Pays 
    self.cadrePays.hidden = true 

    // Banniere Ad 
    self.canDisplayBannerAds = true 
    self.bannierePub.delegate = self 
    self.bannierePub.hidden = true 
} 

//************************* 
// ADBANNERVIEW 
// BANNIERE DE PUBLICITE 
func bannerViewWillLoadAd(banner: ADBannerView!) { 
    NSLog("bannierePub se charge") 
} 

func bannerViewDidLoadAd(banner: ADBannerView!) { 
    self.bannierePub.hidden = false 
} 

func bannerViewActionDidFinish(banner: ADBannerView!) { 
    NSLog("bannierePub a finit de se charger") 
} 

func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool { 
    NSLog("Action pendant que la bannière se charge") 

    return true 
} 

//************************************************************************** 
override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

// Retour de l'écran de détail 
override func viewDidAppear(animated: Bool) { 
    // Indicateur d'Activité : caché 
    self.indicateurActivite.stopAnimating() 
    self.indicateurActivite.hidden = true 
} 

// Bouton Changer Pays 
@IBAction func boutonChangerPays(sender: UIButton) { 

    // On affiche la Vue des Pays 
    self.cadrePays.hidden = false 
}  
} 

Répondre

0

Vous pouvez appeler cette fonction pour apporter avant tout sous-vue.

self.view.bringSubviewToFront(self.yourSubviewName) 
+0

J'ai essayé ceci, mais cela ne fonctionne pas. // Changer Bouton Pays @IBAction func boutonChangerPays (expéditeur: UIButton) {// Sur la Vue des affiche Pays self.cadrePays.hidden = false self.view.bringSubviewToFront (cadrePays) } –

0

Étonnamment, j'ai trouvé la solution en essayant ceci:

En fonction de mon bouton clic, j'ajouter ce code:

self.view.addSubview(self.cadrePays) 

Et il porte le sous-vue dos le fond ! J'espère que ça ne va pas "créer" beaucoup de sous-vues empilées l'une par l'autre!

Les contraintes de position ne sont pas du tout respecté, je devais centre avec:

override func viewDidLayoutSubviews() { 
self.cadrePays.center = self.view.center 
} 

Le sous-vue est centrée horizontalement, mais pas verticalement, mais maintenant je pense que je suis très proche de la solution .

Hope Il aidera d'autres personnes!