Alors j'essaie de mettre en place une simple bannière IAD dans mon application, mais je reçois ces deux avertissements dans la sortie: et p> C'est ce que j'utilise pour implémenter mon J'ai essayé d'ajouter ceci pour arrêter la première erreur: (hasn 't fonctionné) p> adbannerview code>: p>
3 Réponses :
Le problème est chaque fois que vous chargez votre vue, vous créez une nouvelle instance de ViewController.swift strong> p> AdbannerView code>. Ce que nous devons faire est de créer un adbannerview code> une fois dans notre appdelegate.swift présent>, puis présentez ce adbannerview code> sur lesquels nous aimerions avoir une bannière IAD. Ceci est également appelé a Bannière IAD partagée . Dans cet exemple, j'ai créé un adbannerview code> dans mon appdelegate.swift code>, puis l'a ajouté à mon ViewController.swift Code> View. import UIKit
class ViewController: UIViewController {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate // Create reference to our app delegate
override func viewWillAppear(animated: Bool) {
// Position
appDelegate.adBannerView.center = CGPoint(x: view.frame.midX,
y: view.frame.height - appDelegate.adBannerView.frame.height / 2)
// Add to view
view.addSubview(appDelegate.adBannerView)
}
Merci beaucoup! Cela a fonctionné parfaitement, a été une aide massive :)
Êtes-vous sûr que c'est la même instance de bannière que dans Appdelegate? Je ne sais pas si je reçois cette instance de bannière partagée correctement, mais la ligne qui semble bizarre est «autoappdelegate.adbannerView = AdbannerView (cadre: CGRRECT.ZERORECT) '. Ceci est un initialiseur, vous avez donc créé un autre objet.
@ krompir2 merci d'avoir souligné cela. J'ai réimplenté le adbannerview code> et mis à jour pour Swift 2.0.
@DanielStorm étrangement, mais il bloque mon application et dit que c'est à cause de bannerviewDidLoadad code> fonction
@Burungana Assurez-vous que vous incluez le iad.framework code> dans votre projet, de la construction de phases> link binaire avec des bibliothèques> Cliquez sur le + pour rechercher et inclure le cadre. Assurez-vous également que vous avez inclus le délégué pour le adbannerview code> dans votre appdelegate.swift code>, adbannerviewdelegate code>.
Cette approche fonctionne et se débarrasse de l'erreur, mais il doit toujours créer la nouvelle vue de la nouvelle annonce pour chaque onglet. Les onglets de commutation rapide provoquent toujours que la bannière de la publicité vierge soit ajoutée de temps en temps. La meilleure approche que j'ai trouvée pour le résoudre et éviter les contrôleurs d'affichage de la modification consiste à utiliser IAD Suite Exemple publié par Apple: développeur.apple.com/Library/ios/samplecode/iadsuite_sytoryboa RD / ...
Comment puis-je modifier le code ViewController.swift Code> afin de broder la bannière au bas de chaque écran / vue?
@KatherineJenkins Je ne suis pas sûr du code de mise en page automatique exactement, mais vous pouvez l'épincer au fond et l'aligner à x comme je l'ai mentionné ici, Stackoverflow.com/a/34635924/2108547
@DanielStorm Merci pour le type de référence SIR;)
Si vous ne voulez pas vous soucier de la taille, de la position, de la manipulation des erreurs et des méthodes de déléguée de votre annonce de bannière, vous pouvez également utiliser: ceci a résolu l'erreur dans mon application , parce que Apple prend également attention au nombre d'instances p> J'ai écrit un court tutoriel à ce sujet:
lien p> p>
Si vous voulez que la bannière persiste entre les onglets et ne disparaisse pas lors de la commutation rapide des onglets, vous devez faire l'approche de la suite IAD: http://developer.apple.com/library/ios/#samplecode/iadsuite/introduction/intro.html (Découvrez BannerViewController.m Fichier - Pas à Swift, mais il n'est pas difficile de le convertir) P>
Cette approche ne nécessite pas non plus que vous modifiez les contrôleurs d'affichage de la vue dans vos onglets. Vous devez simplement avoir une relation de relation entre votre contrôleur de barre d'onglets à un contrôleur d'affichage qui a une vue conteneur intégrée à celui-ci. Faites-le dans votre scénario. Vous devez également définir la classe personnalisée dans BannerViewController pour chaque onglet et intégrer votre contenu dans la vue intégrée. Jetez un coup d'œil à cet article pour plus de détails sur la façon de faire le storyboard: https://stackoverflow.com/a/16205420/5007500 p>
Si vous n'utilisez pas Storyboard - vous devez définir BannerViewController en tant que contrôleur de vue parent pour chacun de vos onglets. P>
Vous créez une nouvelle "AdbannerView" chaque fois que votre vue est chargée. Ne chargez-vous que cette vue une fois?
Pensé donc, non, cette vue est chargée beaucoup de fois. Que recommanderais-tu? Existe-t-il un moyen de décharger l'AdbannerView ou y a-t-il une meilleure façon de le faire?