使用xib文件的自定义tableview的单元格,无法单击/选择/点击

时间:2016-07-28 11:46:57

标签: ios swift uitableview

我有使用swift的tableview和自定义单元格。下面是完整的代码:

class LeftMenuViewController: UIViewController {

    let titles: [String] = ["Home", "Category", "Chat", "notification", "Flagger", "Feedback", "Setting", "Log Out"]

    override func viewDidLoad() {
        super.viewDidLoad()

        let leftmenuView : LeftMenu = LeftMenu()
        let nib = UINib(nibName: "LeftMenuCell", bundle : nil)
        leftmenuView.tableMenu.registerNib(nib, forCellReuseIdentifier: "cell")
        leftmenuView.tableMenu.dataSource = self
        leftmenuView.tableMenu.delegate = self
        leftmenuView.tableMenu.allowsSelection = true
        leftmenuView.tableMenu.backgroundColor = UIColor.blackColor()
        self.view.addSubview(leftmenuView)
    }
}

extension LeftMenuViewController : UITableViewDelegate, UITableViewDataSource {
    func tableView(tableMenu: UITableView, numberOfRowsInSection section: Int) -> Int {
        return titles.count
    }

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return 40
    }

    func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) {
        tableView.deselectRowAtIndexPath(indexPath, animated: true)
        print("Clicked \(indexPath.row)")
        switch indexPath.row {

        case 0:
            sideMenuViewController?.contentViewController = UINavigationController(rootViewController: HomeViewController())
            sideMenuViewController?.hideMenuViewController()
            break
        case 1:
            sideMenuViewController?.contentViewController = UINavigationController(rootViewController:CategoryViewController())
            sideMenuViewController?.hideMenuViewController()
            break
        default:
            break
        }
    }

    func tableView(tableMenu: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell:LeftMenuCell = tableMenu.dequeueReusableCellWithIdentifier("cell") as! LeftMenuCell
        cell.backgroundColor = UIColor.blackColor()
        cell.menuName.text = titles[indexPath.row]
        cell.menuName.textColor = UIColor.whiteColor()
        return cell
    }
}

但我很困惑,我的手机无法点击/点击。我认为它需要一个简单的 didDeselectRowAtIndexPath 实现?即使我在该方法中打印,也不会写出" Clicked"。

我的代码中有什么问题,有人可以帮助我吗?

谢谢

3 个答案:

答案 0 :(得分:3)

didDeselectRowAtIndexPath更改为didSelectRowAtIndexPath

    点击单元格时会调用
  • didSelect。
  • 当选择另一个单元格时,
  • didDeselect在第一个单元格上被调用。

答案 1 :(得分:0)

如果didDeselectRowAtIndexPath仍未被调用,则检查选择是否为单选,那不应该是没有选择。

参考屏幕截图。

enter image description here

答案 2 :(得分:0)

所有视图都应具有非零帧。尝试将下一个代码添加到LeftMenuViewController

override func viewDidLayoutSubviews {
   super.viewDidLayoutSubviews()
   leftmenuView.frame = self.view.bounds
}

tableView LeftMenu内的layoutSubviews也可能相同,但使用var fieldsData = [] for (var i = 0; i < categorydata.length || i < subdata.length ; i++ ){ fieldsData.push({ category : ( categorydata[i] ? categorydata[i] : '' ), sub : ( subdata[i] ? subdata[i] : '' ) }) } ServiceProviders.update( {'_id': 'JN4mRPfJZqBadZtPY' }, {'$set': {fields : fieldsData}}, true ); 方法。