菜鸟教程小白 发表于 2022-12-13 10:56:05

ios - 如何在点击时更改 UITableViewCell 的部分位置


                                            <p><p>每当点击单元格上的按钮时,我都会尝试将 UITableViewCell 添加到另一个 UITableView 部分。但是,我对如何在单元格已加载到表格 View 后更改单元格的部分位置的过程感到非常困惑。目前我有两个部分,并将 5 个自定义 UITableViewCells 添加到第一部分。 </p>

<p>关于如何将单元格移动到点击的第二部分的任何想法?</p>

<p>这是我的 ViewController 类中的单元格和部分方法:</p>

<pre><code>var tableData = [&#34;One&#34;,&#34;Two&#34;,&#34;Three&#34;,&#34;Four&#34;,&#34;Five&#34;]

// Content within each cell and reusablity on scroll
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; UITableViewCell {
    var tableCell : Task =tableView.dequeueReusableCellWithIdentifier(&#34;cell&#34;, forIndexPath: indexPath) as! Task
      tableCell.selectionStyle = .None
      tableView.separatorStyle = UITableViewCellSeparatorStyle.None

    var titleString = &#34;Section \(indexPath.section) Row \(indexPath.row)&#34;
      tableCell.title.text = titleString
    println(indexPath.row)

    return tableCell
}

// Number of sections in table
func numberOfSectionsInTableView(tableView: UITableView) -&gt; Int {
    return 2
}

// Section titles
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -&gt; String? {
    if section == 0 {
      return &#34;First Section&#34;
    } else {
      return &#34;Second Section&#34;
    }
}

// Number of rows in each section
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int {
    if section == 0 {
      return tableData.count
    } else if section == 1 {
      return 0
    } else {
      return 0
    }
}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您需要为第一部分和第二部分提供单独的数据源。点击按钮时,修改数据源并将单元格移动到新的部分,使用 <code>moveRowAtIndexPath(indexPath: NSIndexPath, toIndexPath newIndexPath: NSIndexPath)</code> UITableView 方法。</p>

<p>例如:</p>

<pre><code>var firstDataSource = [&#34;One&#34;,&#34;Two&#34;,&#34;Three&#34;,&#34;Four&#34;,&#34;Five&#34;]
var secondDataSource = [ ]

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int
{
    return section == 0 ? firstDataSource.count : secondDataSource.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; UITableViewCell
{
    let cell = tableView.dequeueReusableCellWithIdentifier(&#34;Cell&#34;, forIndexPath: indexPath) as! UITableViewCell
    cell.textLabel?.text = indexPath.section == 0 ? firstDataSource : secondDataSource

    return cell
}

// For example, changing section of cell when click on it.
// In your case, similar code should be in the button&#39;s tap event handler
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
    if indexPath.section == 0
    {
      let data = firstDataSource

      tableView.beginUpdates()
      secondDataSource.append(data)
      firstDataSource.removeAtIndex(indexPath.row)

      let newIndexPath = NSIndexPath(forRow: find(secondDataSource, data)!, inSection: 1)

      tableView.moveRowAtIndexPath(indexPath, toIndexPath: newIndexPath)
      tableView.endUpdates()
    }
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何在点击时更改 UITableViewCell 的部分位置,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/32610802/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/32610802/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何在点击时更改 UITableViewCell 的部分位置