我需要检测UITableViewCell
中何时点击UITableView
。
这是我的代码:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let section = indexPath.section
let row = indexPath.row
if section == 2 && row == 0 {
//OTHER CODE
}
}
但不起作用。
这是我的UITableView
:
修改
我的完整代码:
class UserPageWeeklyInformationsTableViewController: UITableViewController, UIWebViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
//VARIABLES
override func viewDidLoad() {
super.viewDidLoad()
//OTHER CODE
}
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
let header:UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
let fontSize = header.textLabel!.font.pointSize
header.textLabel!.font = UIFont(name: "Avenir", size: fontSize)
header.textLabel!.frame = header.frame
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let section = indexPath.section
let row = indexPath.row
print(section)
print(row)
if section == 2 && row == 0 {
NSNotificationCenter.defaultCenter().postNotificationName("goToPost", object: nil)
}
}
}
修改
我的UITableViewController
包含在位于Container View
的{{1}}中。在主UIViewController
中,我实施了UITableViewController
。
修改
我解决了在主Tap Gesture Recognizer
中移除手势识别器的问题。
答案 0 :(得分:3)
我建议您检查是否将类设置为UITableViewDelegate并将其设置为
NSThread *workerThread = [[NSThread alloc] initWithTarget:self
selector:@selector(doWork)
object:nil];
[workerThread start];
答案 1 :(得分:1)
你在故事板里有什么?在tableview接收之前,你可以有一个处理tap的UI元素。
问题是UITapGestureRecognizer在UITableView看到它之前正在处理点击手势。
注意:您可以尝试设置UITapGestureRecognizer.cancelsTouchesInView = false
答案 2 :(得分:0)
由于您的表实际上嵌入了ViewController,您必须使该表成为该ViewController的出口,并将该表的所有代码放入该VC的类中。请注意从函数中删除“覆盖”一词。
class MyViewController: UIViewController, UITableViewDelegate {
@IBOutlet weak var myTable: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
myTable.delegate = self
}
func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
let header:UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
let fontSize = header.textLabel!.font.pointSize
header.textLabel!.font = UIFont(name: "Avenir", size: fontSize)
header.textLabel!.frame = header.frame
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let section = indexPath.section
let row = indexPath.row
print(section)
print(row)
if section == 2 && row == 0 {
NSNotificationCenter.defaultCenter().postNotificationName("goToPost", object: nil)
}
}
}