2014-01-30 4 views
0

Я пытался реализовать TableView, где между строками моего исходного кода я хотел бы вставить GADBannerView (рекламные объявления от Google AdMob). В настоящее время у меня есть источник данных, который каждый раз, когда я заканчиваю, добавляю 10 элементов, таких как бесконечный свиток.UITableView и GADBannerView

Мое намерение состояло в том, чтобы вставить элемент GADBannerView каждые 6 строк. Как я могу это сделать?

UPDATE

Как предложило

public override int RowsInSection (UITableView tableview, int section) 
{ 
    return (int)Math.Floor (Convert.ToDouble(ViewModel.ListElements.Count/6))+ ViewModel.ListElements.Count; 
} 

public override UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) 
{ 
    if(indexPath.Row % 6 == 0 && indexPath.Row > 0){ 
     var cell = tableView.DequeueReusableCell (BannerGATableCell.Key) as BannerGATableCell ?? BannerGATableCell.Create(); 

     _bannerView.LoadRequest (GADRequest.Request); 
     cell.AddSubview(_bannerView); 

     return cell; 
    } 

    if (indexPath.Row >= 6) { 
     return base.GetCell (tableView, NSIndexPath.FromRowSection((int)(indexPath.Row - (int)(indexPath.Row/6)),0)); 
    } 


    return base.GetCell (tableView, indexPath); 
} 

ответ

0

Прежде всего, необходимо знать, сколько баннеров будут вписываться в ваш источник.

  • Скажите, что у вас есть 14 строк в вашем источнике.
  • Каждая 6-я строка должна быть баннером.
  • количество баннеров == (INT) Math.floor (14f/6) == 2

Таким образом, мы имеем один флаг в строке 6 (индекс 5) и один в 12 (индекс 11).

В вашем методе RowsInSection() добавьте к количеству строк, которые у вас есть (для баннеров).

Тогда в GetCell() проверки, если это время, чтобы ввести транспарант:

if(indexPath.Row % 6 == 0 && indexPath.Row > 0) 
{ 
    var bannerCell = tableView.DequeueReusableCell(SOME_SPECIAL_CELL_ID) as BannerCell; 
    if(bannerCell == null) 
    { 
    ... 
    } 

    bannerCell.SetBannerView(SomeHelper.GetBannerView()); 
    return bannerCell; 
} 

BannerCell будет подкласс UITableViewCell вы должны создать, что позволяет устанавливать флаг. Вы также можете использовать обычную ячейку и добавить вид баннера в ячейку ContentView. Но не забудьте сначала снять подвью.

+0

Как было предложено, я сделал обновление, но эта ячейка переопределяет строку в 6 позиции. –

+0

Что случилось с переопределением? Единственное, что я вижу: вы не должны называть 'base.GetCell()', а скорее создавать свою ячейку. – Krumelur

+0

Извините, я использовал неправильный термин. Я хотел сказать, что таким образом элементы всегда имеют одинаковое число, а BannerCell заменяет DataSource ячейки, а не вставлен между шестым и седьмым –

Смежные вопросы