Я новичок в Swift и использую Swift 4.2. У меня есть TableView с меткой и кнопкой. Когда я нажимаю кнопку, я хочу добавить новую строку прямо под строкой, в которой была нажата кнопка. Прямо сейчас, когда я нажимаю кнопку, новая строка добавляется в нижнюю часть TableView каждый раз. Я просматривал посты здесь, но не смог заставить его работать, это моя база кода. У меня есть метод с именем RowClick Я получаю путь индекса строки, по которой щелкнули, но не знаю, как ее использовать, чтобы новая строка отображалась непосредственно под строкой, по которой щелкнули.
class ExpandController: UIViewController,UITableViewDelegate,UITableViewDataSource {
@IBOutlet weak var TableSource: UITableView!
var videos: [String] = ["FaceBook","Twitter","Instagram"]
override func viewDidLoad() {
super.viewDidLoad()
TableSource.delegate = self
TableSource.dataSource = self
TableSource.tableFooterView = UIView(frame: CGRect.zero)
// Do any additional setup after loading the view.
}
@IBAction func RowClick(_ sender: UIButton) {
guard let cell = sender.superview?.superview as? ExpandTVC else {
return
}
let indexPath = TableSource.indexPath(for: cell)
InsertVideoTitle(indexPath: indexPath)
}
func InsertVideoTitle(indexPath: IndexPath?)
{
videos.append("Snapchat")
let indexPath = IndexPath(row: videos.count - 1, section: 0)
TableSource.beginUpdates()
TableSource.insertRows(at: [indexPath], with: .automatic)
TableSource.endUpdates()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return videos.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let videoTitle = videos[indexPath.row]
let cell = TableSource.dequeueReusableCell(withIdentifier: "ExpandTVC") as! ExpandTVC
cell.Title.text = videoTitle
cell.ButtonRow.tag = indexPath.row
cell.ButtonRow.setTitle("Rows",for: .normal)
return cell
}
}
Вот так выглядит моя таблица. Я нажал кнопку «Строки Facebook», и к ней добавилась строка Snapchat. Вместо этого ярлык Snapchat должен появиться в строке ниже Facebook. Любые предложения будут великолепны!