我有一个viewController,它有一个tableView,tableView有2个tableViewCells。 cell1和cell2。
这是我的IB观点
这是我的代码
import UIKit
class userMenuViewController: BaseViewController,UITableViewDataSource,UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
var myArr = ["aaa","bbb","ccc"]
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return (myArr.count)
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
return 100.0;
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell1 = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as! PrefCell1TableViewCell
let cell2 = tableView.dequeueReusableCell(withIdentifier: "cell2", for: indexPath) as! PrefCell2TableViewCell
switch (indexPath.row) {
case 0:
return (cell1)
case 1:
return (cell2)
case 2:
return (cell1)
default:
return (cell1)
}
}
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
print(indexPath.row)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
addSlideMenuButton()
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
当我运行模拟器时,我得到的与我要求的完全相反,正如你可以从屏幕截图中看到的那样
Weirder仍然在我向viewDidLoad添加以下代码之前:
DispatchQueue.main.async {
self.tableView.reloadData()
}
运行模拟器时,单元格顺序是正确的,但单击时它们从一个更改为另一个,并且无法单击第一个单元格[0]
任何帮助将不胜感激
答案 0 :(得分:2)
尝试更改
{eflame, "1.0.1"}
到
let cell1 = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as! PrefCell1TableViewCell
let cell2 = tableView.dequeueReusableCell(withIdentifier: "cell2", for: indexPath) as! PrefCell2TableViewCell
switch (indexPath.row) {
case 0:
return (cell1)
case 1:
return (cell2)
case 2:
return (cell1)
default:
return (cell1)
}