2012-11-29 30 views
3

我想靜態放置一個ADBannerView對象到我的UITableView屏幕上,這意味着我希望它始終保持在我的工具欄(self.navigationController.toolbar)之上,即使用戶在滾動tableview時也是如此。我已經通過ADBannerView將作爲一個子視圖到我的工具欄解決了這個並賦予它負值的幀產地:添加可點擊和固定的子視圖到UITableViewController?

[self setBannerViewSize]; 
[self.navigationController.toolbar addSubview:bannerView]; 

唯一的問題是:我不能點擊並打開iAd的這樣 - 我可以看到橫幅,但是當我點擊它時沒有任何反應。

由於我也使用refreshControl,使用UIViewController而不是UITableViewController並手動添加tableView的選項對我來說不起作用。有沒有其他方法可以讓我的ADBannerView在我的表格視圖控制器中靜態顯示並仍然可以點擊?

謝謝你的建議!

回答

8

耶!畢竟,我自己成功地解決了這個(真正令人討厭的)問題(還有大量的閱讀)!

首先,我發現這真的是world-changing post。基本上這篇文章處理的主題是UITableViewController爲其tableView屬性使用self.view,因此重寫tableView屬性(或手動合成它),再給self.view一個新視圖(從應用程序)並添加tableView作爲其子視圖將使有可能達到tableView的超級視圖。

但是,這仍然沒有解決我的問題,雖然我確信它會,因爲這一切都有道理。我的bannerView出現在正確的位置(並且是固定的),但點擊時它仍然沒有做任何事情。但是還有一件我不知道的小事:

當我在this post中閱讀時,子視圖的superview不僅必須是userInteractionEnabled,而且還要有非透明的backgroundColor。因爲我的superviews背景顏色設置爲[UIColor clearColor],所有這些都不起作用 - 但將backGroundColor設置爲例如blackColor解決了整個問題:bannerView終於可以打開了! :)

所以,我的代碼現在看起來像這樣:

@synthesize tableView; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    if (!tableView && [self.view isKindOfClass:[UITableView class]]) { 
     tableView = (UITableView *)self.view; 
    } 

    self.view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame]; 
    self.tableView.frame = self.view.bounds; 
    [self.view addSubview:self.tableView]; 

    [self resizeTableToFitBanner]; 
    self.view.backgroundColor = [UIColor whiteColor]; 
    [self.view addSubview:bannerView]; 

    // some other code 
} 
+0

世界變化的帖子;)JK - 酷你得到它的工作,代碼看起來不錯,但我不會設置我猜的插入(0應該是默認值?),我會內聯setBannerViewSize我想...讓它現在我想到了更明確,更易於理解的 –

+0

。我只是不會繼承UITableViewController,但UIViewController ...會節省你一半的代碼;)=> myVC:UIViewController 你做了 –

+0

是的,謝謝你對0的建議,我會編輯它。內聯我的setBannerViewSize將會保留代碼,因爲這是非常複雜的。但對UIViewController:正如我張貼上面我也使用refreshControl,目前只在UITableViewControllers工作... :) – CGee

0

我認爲你應該使用容器視圖,並在IB中進行設置。您可以將工具欄和ADBannerView添加到導航控制器根視圖控制器視圖的底部。用容器視圖填充剩餘空間 - 這將自動爲您提供嵌入式視圖控制器。你應該刪除這一個,然後在tableViewController中拖動,並控制從容器視圖拖動到tableViewController以掛鉤嵌入segue。

+0

感謝這個建議,但我根本不要使用任何IB,我都是以編程方式完成的。我用另一種方式解決了這個問題,我會在一分鐘內描述它。 – CGee

相關問題