细胞之间的随机广告

时间:2017-05-03 18:12:43

标签: swift xcode uitableview ads

我试图将广告完全随机地放在class Page1: UITableViewController, UISearchBarDelegate { @IBOutlet weak var searchBar: UISearchBar! var employeesSearching = [Employee]() var isSearching : Bool = false @IBOutlet weak var GoogleBannerView: GADBannerView! let collation = UILocalizedIndexedCollation.current() var sections: [[Any]] = [] var objects: [Any] = [] { didSet { let selector: Selector = #selector(getter: UIApplicationShortcutItem.localizedTitle) sections = Array(repeating: [], count: collation.sectionTitles.count) let sortedObjects = collation.sortedArray(from: objects, collationStringSelector: selector) for object in sortedObjects { let sectionNumber = collation.section(for: object, collationStringSelector: selector) sections[sectionNumber].append(object as AnyObject) } self.tableView.reloadData() } } override func viewDidLoad() { super.viewDidLoad() self.searchBar.delegate = self self.tableView.contentOffset = CGPoint(x: 0, y: searchBar.frame.height) //hide searchBar Shared.instance.employees.sort { (first, second) in first.name.compare(second.name, options: .diacriticInsensitive) == .orderedAscending } } func getMatches(letter: String, withArray array: [Employee]) -> [Employee] { return array.filter({ ($0.name.compare(letter, options: .diacriticInsensitive, range: $0.name.startIndex..<$0.name.index($0.name.startIndex, offsetBy: 1), locale: nil) == .orderedSame)}) } override func numberOfSections(in tableView: UITableView) -> Int { if isSearching { return 1 } return collation.sectionTitles.count } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { let letter = collation.sectionTitles[section] if isSearching { return employeesSearching.count } else { let matches = getMatches(letter: letter, withArray: Shared.instance.employees) if !matches.isEmpty { return matches.count } } return 0 } override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { if isSearching { return nil } let letter = collation.sectionTitles[section] let matches = getMatches(letter: letter, withArray: Shared.instance.employees) if matches.count == 0 { return nil } return collation.sectionTitles[section] } override func sectionIndexTitles(for tableView: UITableView) -> [String]? { if isSearching { return nil } return collation.sectionIndexTitles } override func tableView(_ tableView: UITableView, sectionForSectionIndexTitle title: String, at index: Int) -> Int { return collation.section(forSectionIndexTitle: index) } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { if indexPath.row == 3 || indexPath.row == 9 || indexPath.row == 14 { let cellAd = tableView.dequeueReusableCell(withIdentifier: "cellAd", for: indexPath) GoogleBannerView?.adUnitID = "ca-app-pub-6043248661561548/4628935113" GoogleBannerView?.rootViewController = self GoogleBannerView?.load(GADRequest()) return cellAd } let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TableViewCell1 if isSearching { cell.nameLabel.text = employeesSearching[indexPath.row].name cell.positionLabel.text = employeesSearching[indexPath.row].position } else { let letter = collation.sectionTitles[indexPath.section] let matches = getMatches(letter: letter, withArray: Shared.instance.employees) cell.nameLabel.text = matches[indexPath.row].name cell.positionLabel.text = matches[indexPath.row].position } return cell } ... ... ... } 内的单元格之间。我要向你展示我的主文件,了解我在做什么以及我想要什么: Randomly Ads

表视图控制器

Angularservice

如何将UITableViewCell走私为! AdCell随机进入UITableView?

我的意思是,我应该在cellForRowAt做什么?我对所有这些索引部分感到有点困惑。

2 个答案:

答案 0 :(得分:2)

首先,您需要生成介于0和tableView数据源数组大小

之间的随机数
let lower : UInt32 = 0
let upper : UInt32 = array.count
let randomIndex = arc4random_uniform(upper - lower) + lower

然后你需要在randomIndex

中添加数组中的Ad对象
array.insert(AdObject, atIndex:randomIndex)

然后只需重新加载tableView并处理cellForRow函数中的不同类型

答案 1 :(得分:1)

一种方法是在数据模型中的所需位置插入某种“广告”对象。

然后更新cellForRowAt以查看给定索引路径的数据模型中的对象。如果它是“广告”对象,请创建并设置“广告”单元格。否则,就像现在一样创建和设置适当的数据单元。