me adaptado el enfoque sugerido en la iAdSuite dada aquí
http://developer.apple.com/library/ios/#samplecode/iAdSuite/Introduction/Intro.html
He descargado el código y me he centrado en el ejemplo de 'pestaña'.Copié sobre el BannerViewController.h/.m como está en mi proyecto.
Creé todos mis puntos de vista de la manera habitual con el enfoque del guión gráfico. Sin embargo, en mi clase de AppDelegate, accedí a la barra de pestañas ya construida, que contiene todos los viewControllers construidos en el storyboard.
La clase AppDelegate implementa el protocolo TabBarControllerDelegate:
@interfaceAppDelegate : UIResponder <UITabBarControllerDelegate, UIApplicationDelegate>
El método didFinishLaunchingWithOptions implementación AppDelegate agarra la barra de pestañas pre-construido, el establecimiento de su delegado a la libre (por ejemplo, la clase AppDelegate).
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
// ----------------------------------------------------------
// Set the TabBarController delegate to be 'self'
// ----------------------------------------------------------
_tabBarController = (UITabBarController*)self.window.rootViewController;
// tabController.selectedIndex = [defaults integerForKey:kOptionLastTabSelectedKey];
_tabBarController.delegate = self;
// update tab bar per iAdSuite approach
[self updateiAd];
entonces construyeron un nuevo conjunto de controladores por el enfoque iAdSuite y restablecer la barra de pestañas con estos nuevos elementos de la barra de pestañas.
-(void)updateiAd {
NSArray* viewControllers = [_tabBarController viewControllers];
NSMutableArray*newViewControllers = [[NSMutableArray alloc] init];
BannerViewController*bvc=NULL;
for(UIViewController * vc in viewControllers) {
bvc = [[BannerViewController alloc] initWithContentViewController:vc];
[newViewControllers addObject:bvc];
}
// set the new view controllers, replacing the original set
[_tabBarController setViewControllers:newViewControllers];
}
Este enfoque coloca el mismo 'anuncio' en la parte inferior de cada vista, exactamente como sea necesario. También tuve que establecer el título de la vista en el método viewDidLoad de cada viewController personalizado (de alguna manera, configurarlo en el elemento de la barra no parecía funcionar, no configuró la imagen, pero el último puede reflejar un problema con mis imágenes).
Mi configuración original
TabViewController
NavController1 NavController2 NavController3 ...
| | |
CustomViewController1 CustomViewController2 CustomViewController3
Mi configuración final es ahora
TabViewController
NavController1 NavController2 NavController3 ...
| | |
iAdView1 iAdView2 iAdView3
| | |
CustomViewController1 CustomViewController2 CustomViewController3
En términos de vista del ciclo de vida, debo añadir que sólo los NavControllers están en existencia en el momento en el método updateiAd es llamado.
Los CustomViewControllers1/2/3/etc individuales se crean después de que se completa la llamada.
Muy útil, estoy intentando esto ahora. – bentford
Implementé algo como esto pero tuve dificultades en las vistas donde estoy usando un UISearchBar como el TableViewHeader, así como en las vistas donde el navBar es transparente – coneybeare
Esto realmente parece funcionar –