swift 3 tableView与2 tableCellsViews表现得很奇怪

时间:2017-05-30 07:44:06

标签: swift3 xcode8

我有一个viewController,它有一个tableView,tableView有2个tableViewCells。 cell1和cell2。

这是我的IB观点

builder view

这是我的代码

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.
}



}

当我运行模拟器时,我得到的与我要求的完全相反,正如你可以从屏幕截图中看到的那样

screenshot of view

Weirder仍然在我向viewDidLoad添加以下代码之前:

DispatchQueue.main.async {
        self.tableView.reloadData()
    }

运行模拟器时,单元格顺序是正确的,但单击时它们从一个更改为另一个,并且无法单击第一个单元格[0]

任何帮助将不胜感激

1 个答案:

答案 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)
}