gpt4 book ai didi

swift - 在特定部分插入单元格

转载 作者:行者123 更新时间:2023-11-30 10:23:35 24 4
gpt4 key购买 nike

我正在尝试找到一种方法,允许我在表格 View 的特定部分下插入新单元格。有一个被按下的按钮称为“添加歌曲”,一旦用户按下该按钮,它应该插入一个由原型(prototype)单元构建的新单元。该原型(prototype)单元格将允许用户单击它并编辑该单元格上的某些信息。我一直在尝试编写一种方法,将单元格插入当前位于“3”部分的单元格下方。我确信这很简单,我搞砸了,因为我不太习惯做表格 View 。这是我的代码:

import UIKit

class MultipleSongsTableViewController: UITableViewController {


override func viewDidLoad() {
super.viewDidLoad()
}

@IBAction func addSong(_ sender: Any) {
insertNewSongCell()
}

func insertNewSongCell() {
let indexPath = IndexPath(row: -1, section: 3)

tableView.beginUpdates()
tableView.insertRows(at: [indexPath], with: .automatic)
tableView.endUpdates()
}
}

extension MultipleSongsTableViewController {


override func numberOfSections(in tableView: UITableView) -> Int {
return 5
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
return 1
} else if section == 1 {
return 1
} else if section == 2 {
return 1
} else if section == 3 {
return 1
} else {
return 1
}
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.section == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "trackTitleCell", for: indexPath) as! ReleaseTitleTableViewCell


return cell
} else if indexPath.section == 1 {

let cell = tableView.dequeueReusableCell(withIdentifier: "genreCell", for: indexPath) as! Genre2TableViewCell

return cell
} else if indexPath.section == 2 {

let cell = tableView.dequeueReusableCell(withIdentifier: "TrackListCell", for: indexPath) as! TrackListTableViewCell

return cell
} else if indexPath.section == 3 {

let cell = tableView.dequeueReusableCell(withIdentifier: "TrackListSongCells", for: indexPath) as! TrackListSongsTableViewCell


return cell
} else {

let cell = tableView.dequeueReusableCell(withIdentifier: "AddSongButtonCell", for: indexPath) as! AddSongTableViewCell

return cell
}
}
}

这里还有一张屏幕截图,显示了我的 View Controller 的外观以及我期望新单元格填充的位置。 Simulator Screen Shot

我希望将新单元格插入到“歌曲名称”单元格之后,我希望插入的单元格与当前存在的原型(prototype)单元格相同,因为用户可以单击该单元格并填写信息并将当前的“歌曲名称”标签更改为他们想要的名称。

最佳答案

首先,您需要一个用于该部分的数据源数组

var songs = [String]()

然后你必须修改numberOfRowsInSection以返回第3部分的歌曲数量。无论如何,这个方法可以简化

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
case 3: return songs.count
default: return 1
}
}

现在您可以向数组添加新歌曲并插入行

func insertNewSongCell() {
let insertionIndex = songs.count
songs.append("New Song")
let indexPath = IndexPath(row: insertionIndex, section: 3)
tableView.insertRows(at: [indexPath], with: .automatic)
}

beginUpdatesendUpdates 在这种情况下不起作用,您可以省略这些行。

关于swift - 在特定部分插入单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60198689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com