2016-08-10 3 views
-1

Ich muss erkennen, wenn ein UITableViewCell in meinem UITableView tippen ist.Tippen Sie auf UITabelViewCell nicht erkannt

Dies ist mein Code:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     let section = indexPath.section 
     let row = indexPath.row 
     if section == 2 && row == 0 { 
      //OTHER CODE 
     } 
} 

aber nicht funktioniert.

Und das ist die Einstellung von Attributen Inspector meiner UITableView:

enter image description here enter image description here

EDIT:

Mein vollständiger Code:

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

EDIT:

Meine UITableViewController ist in einer Container View enthalten, die sich in einer UIViewController befindet. Im Wesentlichen UITableViewController implementiere ich die Tap Gesture Recognizer.

EDIT:

ich das Problem, das Entfernen der Gestenerkenner in Haupt UIViewController lösen.

+0

Ist DidSelectRowAtIndexPath auch genannt experimentieren können? Hast du vielleicht einen msSelectRowAtIndexPath implementiert? – ff10

+0

Abschnitt 2 im Code ist der dritte Abschnitt in Ihrer Tabelle. Klicken Sie auf die richtige Zeile? – Shades

+0

@ ff10 Ich habe nicht WillenSelectRowAtIndexPath. –

Antwort

1

Was haben Sie im Storyboard? Sie könnten ein Oberflächenelement haben, das die Berührung behandelt, bevor die Tabellenansicht es empfängt.

Das Problem ist, dass ein UITapGestureRecognizer die Antippen-Geste behandelte, bevor das UITableView es sah.

Hinweis: Anstatt die Tippgeste zu entfernen, werden Sie mit der Einstellung UITapGestureRecognizer.cancelsTouchesInView = false

3

ich überprüfen vorschlagen, wenn Sie die Klasse als UITableViewDelegate eingestellt und Sie legen Sie es als

tableView.delegate = self 
+2

warum bei der negativen Abstimmung, kann diese Antwort auch nützlich sein –

0

sein, dass Ihre Tabelle in der Tat in eine Viewcontroller eingebettet ist, müssen Sie die Tabelle einen Ausgang dieser Viewcontroller machen und lege den gesamten Code für die Tabelle in die VC-Klasse. Beachten Sie das Entfernen des Wortes "override" von den Funktionen.

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) 
     } 
    } 
} 
Verwandte Themen