Я пытаюсь найти способ, который позволил бы мне вставить новую ячейку в указанный раздел c в моем табличном представлении. Есть кнопка, которая называется «добавить песню», и как только пользователь нажимает на нее, он должен вставить новую ячейку, созданную с ячейкой-прототипом. Эта ячейка прототипа позволит пользователю щелкнуть по ней и редактировать определенную информацию в этой ячейке. Я пытался кодировать способ вставить ячейку ниже ячейки, которая в настоящее время находится в этом разделе, который является разделом «3». Я уверен, что это что-то простое, что я испортил, так как я не очень привык делать просмотр таблиц. Вот мой код:
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
}
}
}
Также здесь приведен скриншот того, как выглядит мой viewcontroller и где я ожидаю заполнение новой ячейки. ![Simulator Screen Shot](https://i.stack.imgur.com/bywmX.png)
Я хотел бы, чтобы новая ячейка была вставлена после ячейки с надписью «Название песни», я хотел бы, чтобы вставленная ячейка была той же самой ячейкой прототипа, которая в данный момент существует потому что пользователь может щелкнуть эту ячейку, заполнить информацию и изменить текущую метку «Название песни» на то, что он когда-либо захочет.