我有使用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"。
我的代码中有什么问题,有人可以帮助我吗?
谢谢
答案 0 :(得分:3)
将didDeselectRowAtIndexPath
更改为didSelectRowAtIndexPath
。
答案 1 :(得分:0)
答案 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 );
方法。