菜鸟教程小白 发表于 2022-12-11 20:54:27

ios - 在表格 View 中每 5 个单元格后添加一个广告正在替换内容


                                            <p><p>我在 stackoverflow 上搜索了有关如何执行此操作的提示和 <a href="https://stackoverflow.com/questions/34282607/ad-cell-after-every-five-cells-in-tableview" rel="noreferrer noopener nofollow">I found this question here</a>但这并没有解决我的问题,我想要同样的东西(每 5 行添加一个广告<strong>after</strong>),我尝试了那里提到的解决方案,但我得到的是第一行是被广告取代,作为第5个,依此类推,我的正常内容被广告取代。
所以我想实现这个:</p>

<pre><code>row 0 = normal content
row 1 = normal content
row 2 = normal content
row 3 = normal content
row 4 = normal content
row 5 = ad
row 6 = normal content
...
</code></pre>

<p>这是我尝试过的:</p>

<pre><code>func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -&gt; UITableViewCell {

      if (indexPath.row % 5 == 0 &amp;&amp; indexPath.row != 0) {
            if let cellBanner = tableView.dequeueReusableCell(withIdentifier: &#34;cellBanner&#34;, for: indexPath) as? BannerCell {

                return cellBanner
            } else {
                return UITableViewCell()
            }
      } else {
            if let cell = tableView.dequeueReusableCell(withIdentifier: &#34;cell&#34;, for: indexPath) as? AnuncioCell {
                if AnunciosService.instance.anuncios.count &gt;= indexPath.row {
                  let anuncio = AnunciosService.instance.anuncios
                  let rowsToLoadFromBottom = 5;
                  let rowsLoaded = AnunciosService.instance.anuncios.count

                  if (!self.fetchingMore &amp;&amp; (indexPath.row - (indexPath.row / 5) &gt;= (rowsLoaded - rowsToLoadFromBottom))) {
                        let totalRows = AnunciosService.instance.anunciosCount
                        let remainingAnunciosToLoad = totalRows - rowsLoaded;
                        if (remainingAnunciosToLoad &gt; 0) {
                            self.loadMoreAnuncios()
                        }
                  }

                  cell.configureCell(anuncio: anuncio)
                  let checkValue = Double(anuncio.user.nota)!
                  if checkValue &lt; 1.0 {
                        cell.notaView.isHidden = true
                  }else{
                        cell.notaView.isHidden = false
                  }
                  if anuncio.destaque {
                        cell.destaque.isHidden = false
                  } else {
                        cell.destaque.isHidden = true
                  }
                  if anuncio.status == 0 {
                        if cell.imgAnuncio.image != nil{
                            Noir(originalImage: cell.imgAnuncio)
                        }
                        cell.sold_out.isHidden = false
                        cell.selectionStyle = .none
                        cell.isUserInteractionEnabled = false;
                  } else {
                        cell.sold_out.isHidden = true
                        cell.isUserInteractionEnabled = true;
                        cell.selectionStyle = .default
                  }

                }

                return cell
            } else {
                return UITableViewCell()
            }
      }

    }
</code></pre>

<p>numberOfRowsInSection:</p>

<pre><code>func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
      if AnunciosService.instance.anuncios.count == 0 {
            return 0
      }
      return AnunciosService.instance.anuncios.count + BannersService.instance.banners.count
    }
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我做错了,对于那些想知道我如何解决它的人:</p>

<pre><code>func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -&gt; UITableViewCell {

      let index = indexPath.row + 1
      if (index % 6 == 0 &amp;&amp; indexPath.row != 0 &amp;&amp; index/6 &lt;= BannersService.instance.banners.count) {
            let cellBanner = tableView.dequeueReusableCell(withIdentifier: &#34;cellBanner&#34;, for: indexPath) as! BannerCell

            return cellBanner
      } else {
            let cell = tableView.dequeueReusableCell(withIdentifier: &#34;cell&#34;, for: indexPath) as! AnuncioCell
            let index = indexPath.row - (indexPath.row / 6)
            if AnunciosService.instance.anuncios.count &gt; index {
                let anuncio = AnunciosService.instance.anuncios
                let rowsToLoadFromBottom = 5;
                let rowsLoaded = AnunciosService.instance.anuncios.count

                if (!self.fetchingMore &amp;&amp; (index &gt;= (rowsLoaded - rowsToLoadFromBottom))) {
                  let totalRows = AnunciosService.instance.anunciosCount
                  let remainingAnunciosToLoad = totalRows - rowsLoaded;
                  if (remainingAnunciosToLoad &gt; 0) {
                        self.loadMoreAnuncios()
                  }
                }

                cell.configureCell(anuncio: anuncio)
                let checkValue = Double(anuncio.user.nota)!
                if checkValue &lt; 1.0 {
                  cell.notaView.isHidden = true
                }else{
                  cell.notaView.isHidden = false
                }
                if anuncio.destaque {
                  cell.destaque.isHidden = false
                } else {
                  cell.destaque.isHidden = true
                }
                if anuncio.status == 0 {
                  if cell.imgAnuncio.image != nil {
                        Noir(originalImage: cell.imgAnuncio)
                  }
                  cell.sold_out.isHidden = false
                  cell.selectionStyle = .none
                  cell.isUserInteractionEnabled = false;
                } else {
                  cell.sold_out.isHidden = true
                  cell.isUserInteractionEnabled = true;
                  cell.selectionStyle = .default
                }
            }

            return cell
      }

    }
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在表格 View 中每 5 个单元格后添加一个广告正在替换内容,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/53567357/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/53567357/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在表格 View 中每 5 个单元格后添加一个广告正在替换内容