按下按钮时添加 Table 视图单元格
Adding a Table View Cell when a button is pressed
我希望我的 swift 代码在按下按钮时添加另一个表格视图单元格。现在有 2 个 tableview 单元格。该按钮是橙色按钮,按下时应添加第三个绿色 tabview 单元格。添加第三个单元格的函数是 addCell。查看 numberOfRowsInSelection 以及定义 2 个单元格的区域。
import UIKit
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource, UIImagePickerControllerDelegate & UINavigationControllerDelegate {
var arr = [1,1,3,3]
var tableview = UITableView()
var arrayThatStartsEmptyImage = [UIImage]()
var currentIndex = 0
var startBtnpress = UIButton()
var selectedIndexPath = IndexPath(row: 0, section: 0)
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 118
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! customtv
return cell
}
@objc func addCell(){
//add 3 cell
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
tableview.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height * 0.8)
startBtnpress.frame = CGRect(x: 0, y: view.frame.height * 0.8, width: view.frame.width / 2 , height: view.frame.height / 5)
view.addSubview(tableview)
view.addSubview(startBtnpress)
startBtnpress.backgroundColor = .orange
tableview.register(customtv.self, forCellReuseIdentifier: "cell")
tableview.delegate = self
tableview.dataSource = self
}
}
class customtv: UITableViewCell {
lazy var backView : UIView = {
let view = UIView(frame: CGRect(x: 10, y: 6, width: self.frame.width , height: 110))
view.backgroundColor = .green
return view
}()
override func layoutSubviews() {
backView.clipsToBounds = true
backView.frame = CGRect(x: 0, y: 6, width: bounds.maxX , height: 110)
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(animated, animated: true)
addSubview(backView)
}
}
这已经被问过 之前...
而不是 return 在 tableView(_:numberOfRowsInSection:)
中使用硬编码值,您想要 return 数据源中的项目数(我假设是 arr
).
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arr.count
}
然后,只需添加一行
func addRowToEnd() {
arr.append(5) /// not sure what the numbers mean though...
tableView.beginUpdates()
tableView.insertRows(at: [IndexPath(row: arr.count - 1, section: 0)], with: .automatic) /// animate the insertion
tableView.endUpdates()
}
我希望我的 swift 代码在按下按钮时添加另一个表格视图单元格。现在有 2 个 tableview 单元格。该按钮是橙色按钮,按下时应添加第三个绿色 tabview 单元格。添加第三个单元格的函数是 addCell。查看 numberOfRowsInSelection 以及定义 2 个单元格的区域。
import UIKit
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource, UIImagePickerControllerDelegate & UINavigationControllerDelegate {
var arr = [1,1,3,3]
var tableview = UITableView()
var arrayThatStartsEmptyImage = [UIImage]()
var currentIndex = 0
var startBtnpress = UIButton()
var selectedIndexPath = IndexPath(row: 0, section: 0)
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 118
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! customtv
return cell
}
@objc func addCell(){
//add 3 cell
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
tableview.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height * 0.8)
startBtnpress.frame = CGRect(x: 0, y: view.frame.height * 0.8, width: view.frame.width / 2 , height: view.frame.height / 5)
view.addSubview(tableview)
view.addSubview(startBtnpress)
startBtnpress.backgroundColor = .orange
tableview.register(customtv.self, forCellReuseIdentifier: "cell")
tableview.delegate = self
tableview.dataSource = self
}
}
class customtv: UITableViewCell {
lazy var backView : UIView = {
let view = UIView(frame: CGRect(x: 10, y: 6, width: self.frame.width , height: 110))
view.backgroundColor = .green
return view
}()
override func layoutSubviews() {
backView.clipsToBounds = true
backView.frame = CGRect(x: 0, y: 6, width: bounds.maxX , height: 110)
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(animated, animated: true)
addSubview(backView)
}
}
这已经被问过
而不是 return 在 tableView(_:numberOfRowsInSection:)
中使用硬编码值,您想要 return 数据源中的项目数(我假设是 arr
).
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return arr.count
}
然后,只需添加一行
func addRowToEnd() {
arr.append(5) /// not sure what the numbers mean though...
tableView.beginUpdates()
tableView.insertRows(at: [IndexPath(row: arr.count - 1, section: 0)], with: .automatic) /// animate the insertion
tableView.endUpdates()
}