第一个表格视图图像1->
第二个表格视图(嵌套在第一个表格视图中)图像2->
嵌套表视图的第一行在点击后可以正常工作,但其他行却无法工作图像3->
当我点击第一tableView
的第一行时,它可以正常工作;当我点击第二tableView
的第一行时,它也可以工作。
问题是当我点击第二张表视图的第二行时,它不起作用。
就像第一张表视图的第二行被录音一样,然后在第二张表中查看。点击时,只有第二行在工作。
class CartVC: UIViewController, UITableViewDelegate, UITableViewDataSource {
var selectedIndex = -1
var nestedSelectedIndex = -1
var nestedTableViewCellDataTitle : [String] = ["ABC123", "DEF456","GHI890","JKL145"]
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableView.tag == 1{
return 5
}
else{
return nestedTableViewCellDataTitle.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView.tag == 1{
let cell = tableView.dequeueReusableCell(withIdentifier: "CartViewCell", for: indexPath) as! CartTableViewCell
cell.nestedTableView.delegate = self
cell.nestedTableView.dataSource = self
return cell
}else {
let cell = tableView.dequeueReusableCell(withIdentifier: "NestedCartTableCell", for: indexPath) as! NestedCartTableCell
cell.productTitle.text = nestedTableViewCellDataTitle[indexPath.row]
return cell
}
}
//Hide and Open when we tap on table view
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if tableView.tag == 1{
if selectedIndex == indexPath.row{
selectedIndex = -1
}else{
selectedIndex = indexPath.row
}
self.tableView.beginUpdates()
self.tableView.reloadRows(at: [indexPath], with: UITableView.RowAnimation.automatic)
self.tableView.endUpdates()
}else if tableView.tag == 2{
if nestedSelectedIndex == indexPath.row{
nestedSelectedIndex = -1
}else{
nestedSelectedIndex = indexPath.row
}
self.tableView.beginUpdates()
self.tableView.reloadRows(at: [indexPath], with: UITableView.RowAnimation.automatic)
self.tableView.endUpdates()
}
}
//Specify hight for both view
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if tableView.tag == 1{
if selectedIndex == indexPath.row{
return 500
}else{
return 37
}
}else{
if nestedSelectedIndex == indexPath.row{
return 410
}else{
return 106
}
}
}
答案 0 :(得分:0)
创建UITableView类型的新变量。存储嵌套的tableView表格的第一个TableView单元格,然后在嵌套的tableView的行上点击时重新加载此表。
CartVC类:UIViewController,UITableViewDelegate,UITableViewDataSource {
var selectedIndex = -1
var nestedSelectedIndex = -1
var nestedTableViewCellDataTitle : [String] = ["ABC123", "DEF456","GHI890","JKL145"]
var newTableView = UITableView() **//This is the key (Solution Line 1)**
var requestForMatchineStyleImage : [String] =["BAGS","BANGLES","BELTS","BRACELETS","CUFFLINKS","EARRINGS","FINGER-RINGS","HEADBANDS","KEYRINGS","NECKLACES","STRINGS"]
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableView.tag == 1{
return 5
}
else{
return nestedTableViewCellDataTitle.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if tableView.tag == 1{
let cell = tableView.dequeueReusableCell(withIdentifier: "CartViewCell", for: indexPath) as! CartTableViewCell
cell.nestedTableView.delegate = self
cell.nestedTableView.dataSource = self
newTableView = cell.nestedTableView //**This is the key (Solution Line 2)**
return cell
}else {
let cell = tableView.dequeueReusableCell(withIdentifier: "NestedCartTableCell", for: indexPath) as! NestedCartTableCell
cell.productTitle.text = nestedTableViewCellDataTitle[indexPath.row]
return cell
}
}
//Hide and Open when we tap on table view
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
//let cell = tableView.cellForRow(at: indexPath)
if tableView.tag == 1{
if selectedIndex == indexPath.row{
selectedIndex = -1
}else{
selectedIndex = indexPath.row
}
self.tableView.beginUpdates()
self.tableView.reloadRows(at: [indexPath], with: UITableView.RowAnimation.automatic)
self.tableView.endUpdates()
}else if tableView.tag == 2{
if nestedSelectedIndex == indexPath.row{
nestedSelectedIndex = -1
}else{
nestedSelectedIndex = indexPath.row
}
self.newTableView.beginUpdates() **//This is the key (Solution Line 3)**
self.newTableView.reloadRows(at: [indexPath], with: UITableView.RowAnimation.automatic) **//This is the key (Solution Line 4)**
self.newTableView.endUpdates()**//This is the key (Solution Line 5)**
}
}
//Specify hight for both view
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if tableView.tag == 1{
if selectedIndex == indexPath.row{
return 500
}else{
return 37
}
}else{
if nestedSelectedIndex == indexPath.row{
return 430
}else{
return 106
}
}
}
@IBAction func backArrowBtnAction(_ sender: Any) {
dismiss(animated: true
, completion: nil)
}
@IBAction func backTextBtnAction(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
static func storyboardInstance() -> CartVC? {
let storyboard = UIStoryboard(name: "CartSt", bundle: nil)
return storyboard.instantiateInitialViewController() as? CartVC
}
override var prefersStatusBarHidden: Bool {
return true
}
}
扩展名CartVC:UICollectionViewDelegate,UICollectionViewDataSource { func collectionView(_ collectionView:UICollectionView,numberOfItemsInSection部分:Int)-> Int { 返回requestForMatchineStyleImage.count }
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCellOfRFQ", for: indexPath) as! RFQNestedCollectionViewCell
return cell
}
}