点击UITabelViewCell没有被检测到

时间:2016-08-10 13:57:30

标签: ios swift uitableview

我需要检测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

的属性检查器的设置

enter image description here enter image description here

修改

我的完整代码:

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中移除手势识别器的问题。

3 个答案:

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