I dostosowany podejście sugerowane w iAdSuite podane tutaj
http://developer.apple.com/library/ios/#samplecode/iAdSuite/Introduction/Intro.html
Pobrałem kod i skoncentrowałem się na przykładzie "tabulacji".Skopiowałem przez BannerViewController.h/.m jak do mojego projektu.
Wszystkie moje poglądy stworzyłem w zwykły sposób, stosując podejście storyboard. Jednak w mojej klasie AppDelegate uzyskałem dostęp do już zbudowanego paska kart - zawierającego wszystkie storyboard zbudowany viewControllers.
Klasa AppDelegate realizuje protokół TabBarControllerDelegate:
@interfaceAppDelegate : UIResponder <UITabBarControllerDelegate, UIApplicationDelegate>
AppDelegate didFinishLaunchingWithOptions realizacji sposób chwyta wstępnie utworzony umieszczenie zakładek, ustawiając jego pełnomocnika do siebie (na przykład klasy 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];
Następnie zbudowałem nowy zestaw kontrolerów zgodnie z podejściem iAdSuite i zresetowałem pasek kart z tymi nowymi elementami paska kart.
-(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];
}
To podejście umieszcza tę samą "reklamę" u dołu każdego widoku, dokładnie w razie potrzeby. Musiałem również ustawić tytuł widoku w metodzie viewDidLoad każdego niestandardowego viewController (jakoś ustawienie go na pasku nie wydawało się działać, nie ustawiłem obrazu, później może to odzwierciedlać problem z moimi obrazami jednak).
Moja oryginalna konfiguracja została
TabViewController
NavController1 NavController2 NavController3 ...
| | |
CustomViewController1 CustomViewController2 CustomViewController3
Moja ostatnia konfiguracja jest teraz
TabViewController
NavController1 NavController2 NavController3 ...
| | |
iAdView1 iAdView2 iAdView3
| | |
CustomViewController1 CustomViewController2 CustomViewController3
Pod względem widzenia cyklu, należy dodać, że tylko NavControllers są w istnienie w czasie metoda updateiAd jest nazywa.
Poszczególne kontrolery CustomViewControllers1/2/3/etc zostaną utworzone po zakończeniu połączenia.
Bardzo pomocna, próbuję teraz. – bentford
Zaimplementowałem coś takiego, ale miałem trudności w widokach, w których używam UISearchBar jako tableViewHeader, a także w widokach, gdzie navBar jest przezroczysty. – coneybeare
To faktycznie wydaje się działać –